Skip to content

Commit 10654d7

Browse files
committed
Make the arith ops const_traits
1 parent 2c2bb99 commit 10654d7

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

library/core/src/ops/arith.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,14 @@ add_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f16 f32 f64 f128
179179
/// ```
180180
#[lang = "sub"]
181181
#[stable(feature = "rust1", since = "1.0.0")]
182+
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
182183
#[rustc_on_unimplemented(
183184
message = "cannot subtract `{Rhs}` from `{Self}`",
184185
label = "no implementation for `{Self} - {Rhs}`",
185186
append_const_msg
186187
)]
187188
#[doc(alias = "-")]
189+
#[const_trait]
188190
pub trait Sub<Rhs = Self> {
189191
/// The resulting type after applying the `-` operator.
190192
#[stable(feature = "rust1", since = "1.0.0")]
@@ -206,7 +208,7 @@ pub trait Sub<Rhs = Self> {
206208
macro_rules! sub_impl {
207209
($($t:ty)*) => ($(
208210
#[stable(feature = "rust1", since = "1.0.0")]
209-
impl Sub for $t {
211+
impl const Sub for $t {
210212
type Output = $t;
211213

212214
#[inline]
@@ -310,11 +312,13 @@ sub_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f16 f32 f64 f128
310312
/// ```
311313
#[lang = "mul"]
312314
#[stable(feature = "rust1", since = "1.0.0")]
315+
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
313316
#[diagnostic::on_unimplemented(
314317
message = "cannot multiply `{Self}` by `{Rhs}`",
315318
label = "no implementation for `{Self} * {Rhs}`"
316319
)]
317320
#[doc(alias = "*")]
321+
#[const_trait]
318322
pub trait Mul<Rhs = Self> {
319323
/// The resulting type after applying the `*` operator.
320324
#[stable(feature = "rust1", since = "1.0.0")]
@@ -336,7 +340,7 @@ pub trait Mul<Rhs = Self> {
336340
macro_rules! mul_impl {
337341
($($t:ty)*) => ($(
338342
#[stable(feature = "rust1", since = "1.0.0")]
339-
impl Mul for $t {
343+
impl const Mul for $t {
340344
type Output = $t;
341345

342346
#[inline]
@@ -444,11 +448,13 @@ mul_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f16 f32 f64 f128
444448
/// ```
445449
#[lang = "div"]
446450
#[stable(feature = "rust1", since = "1.0.0")]
451+
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
447452
#[diagnostic::on_unimplemented(
448453
message = "cannot divide `{Self}` by `{Rhs}`",
449454
label = "no implementation for `{Self} / {Rhs}`"
450455
)]
451456
#[doc(alias = "/")]
457+
#[const_trait]
452458
pub trait Div<Rhs = Self> {
453459
/// The resulting type after applying the `/` operator.
454460
#[stable(feature = "rust1", since = "1.0.0")]
@@ -476,7 +482,7 @@ macro_rules! div_impl_integer {
476482
///
477483
#[doc = $panic]
478484
#[stable(feature = "rust1", since = "1.0.0")]
479-
impl Div for $t {
485+
impl const Div for $t {
480486
type Output = $t;
481487

482488
#[inline]
@@ -496,7 +502,7 @@ div_impl_integer! {
496502
macro_rules! div_impl_float {
497503
($($t:ty)*) => ($(
498504
#[stable(feature = "rust1", since = "1.0.0")]
499-
impl Div for $t {
505+
impl const Div for $t {
500506
type Output = $t;
501507

502508
#[inline]
@@ -546,11 +552,13 @@ div_impl_float! { f16 f32 f64 f128 }
546552
/// ```
547553
#[lang = "rem"]
548554
#[stable(feature = "rust1", since = "1.0.0")]
555+
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
549556
#[diagnostic::on_unimplemented(
550557
message = "cannot calculate the remainder of `{Self}` divided by `{Rhs}`",
551558
label = "no implementation for `{Self} % {Rhs}`"
552559
)]
553560
#[doc(alias = "%")]
561+
#[const_trait]
554562
pub trait Rem<Rhs = Self> {
555563
/// The resulting type after applying the `%` operator.
556564
#[stable(feature = "rust1", since = "1.0.0")]
@@ -578,7 +586,7 @@ macro_rules! rem_impl_integer {
578586
///
579587
#[doc = $panic]
580588
#[stable(feature = "rust1", since = "1.0.0")]
581-
impl Rem for $t {
589+
impl const Rem for $t {
582590
type Output = $t;
583591

584592
#[inline]

0 commit comments

Comments
 (0)