|
75 | 75 | /// ```
|
76 | 76 | #[lang = "add"]
|
77 | 77 | #[stable(feature = "rust1", since = "1.0.0")]
|
78 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} + {RHS}`"] |
| 78 | +#[rustc_on_unimplemented( |
| 79 | + on( |
| 80 | + any( |
| 81 | + all(_Self="i128", RHS="i64"), |
| 82 | + all(_Self="i128", RHS="i32"), |
| 83 | + all(_Self="i128", RHS="i16"), |
| 84 | + all(_Self="i128", RHS="i8"), |
| 85 | + all(_Self="i64", RHS="i32"), |
| 86 | + all(_Self="i64", RHS="i16"), |
| 87 | + all(_Self="i64", RHS="i8"), |
| 88 | + all(_Self="i32", RHS="i16"), |
| 89 | + all(_Self="i32", RHS="i8"), |
| 90 | + all(_Self="i16", RHS="i8"), |
| 91 | + all(_Self="u128", RHS="u64"), |
| 92 | + all(_Self="u128", RHS="u32"), |
| 93 | + all(_Self="u128", RHS="u16"), |
| 94 | + all(_Self="u128", RHS="u8"), |
| 95 | + all(_Self="u64", RHS="u32"), |
| 96 | + all(_Self="u64", RHS="u16"), |
| 97 | + all(_Self="u64", RHS="u8"), |
| 98 | + all(_Self="u32", RHS="u16"), |
| 99 | + all(_Self="u32", RHS="u8"), |
| 100 | + all(_Self="u16", RHS="u8"), |
| 101 | + all(_Self="f64", RHS="i32"), |
| 102 | + all(_Self="f64", RHS="i16"), |
| 103 | + all(_Self="f64", RHS="i8"), |
| 104 | + all(_Self="f64", RHS="u32"), |
| 105 | + all(_Self="f64", RHS="u16"), |
| 106 | + all(_Self="f64", RHS="u8"), |
| 107 | + all(_Self="f32", RHS="i16"), |
| 108 | + all(_Self="f32", RHS="i8"), |
| 109 | + all(_Self="f32", RHS="u16"), |
| 110 | + all(_Self="f32", RHS="u8"), |
| 111 | + ), |
| 112 | + message="cannot add `{RHS}` to `{Self}`", |
| 113 | + label="no implementation for `{Self} + {RHS}`, but you can safely cast \ |
| 114 | + `{RHS}` into `{Self}` using `as {Self}`", |
| 115 | + ), |
| 116 | + on( |
| 117 | + any( |
| 118 | + all(RHS="i128", _Self="i64"), |
| 119 | + all(RHS="i128", _Self="i32"), |
| 120 | + all(RHS="i128", _Self="i16"), |
| 121 | + all(RHS="i128", _Self="i8"), |
| 122 | + all(RHS="i64", _Self="i32"), |
| 123 | + all(RHS="i64", _Self="i16"), |
| 124 | + all(RHS="i64", _Self="i8"), |
| 125 | + all(RHS="i32", _Self="i16"), |
| 126 | + all(RHS="i32", _Self="i8"), |
| 127 | + all(RHS="i16", _Self="i8"), |
| 128 | + all(RHS="u128", _Self="u64"), |
| 129 | + all(RHS="u128", _Self="u32"), |
| 130 | + all(RHS="u128", _Self="u16"), |
| 131 | + all(RHS="u128", _Self="u8"), |
| 132 | + all(RHS="u64", _Self="u32"), |
| 133 | + all(RHS="u64", _Self="u16"), |
| 134 | + all(RHS="u64", _Self="u8"), |
| 135 | + all(RHS="u32", _Self="u16"), |
| 136 | + all(RHS="u32", _Self="u8"), |
| 137 | + all(RHS="u16", _Self="u8"), |
| 138 | + all(RHS="f64", _Self="i32"), |
| 139 | + all(RHS="f64", _Self="i16"), |
| 140 | + all(RHS="f64", _Self="i8"), |
| 141 | + all(RHS="f64", _Self="u32"), |
| 142 | + all(RHS="f64", _Self="u16"), |
| 143 | + all(RHS="f64", _Self="u8"), |
| 144 | + all(RHS="f32", _Self="i16"), |
| 145 | + all(RHS="f32", _Self="i8"), |
| 146 | + all(RHS="f32", _Self="u16"), |
| 147 | + all(RHS="f32", _Self="u8"), |
| 148 | + ), |
| 149 | + message="cannot add `{RHS}` to `{Self}`", |
| 150 | + label="no implementation for `{Self} + {RHS}`, but you can safely turn \ |
| 151 | + `{Self}` into `{RHS}` using `as {RHS}`", |
| 152 | + ), |
| 153 | + on( |
| 154 | + all(_Self="{integer}", RHS="{float}"), |
| 155 | + message="cannot add a float to an integer", |
| 156 | + label="no implementation for `{Self} + {RHS}`", |
| 157 | + ), |
| 158 | + on( |
| 159 | + all(_Self="{float}", RHS="{integer}"), |
| 160 | + message="cannot add an integer to a float", |
| 161 | + label="no implementation for `{Self} + {RHS}`", |
| 162 | + ), |
| 163 | + message="cannot add `{RHS}` to `{Self}`", |
| 164 | + label="no implementation for `{Self} + {RHS}`")] |
79 | 165 | pub trait Add<RHS=Self> {
|
80 | 166 | /// The resulting type after applying the `+` operator.
|
81 | 167 | #[stable(feature = "rust1", since = "1.0.0")]
|
@@ -170,7 +256,8 @@ add_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
170 | 256 | /// ```
|
171 | 257 | #[lang = "sub"]
|
172 | 258 | #[stable(feature = "rust1", since = "1.0.0")]
|
173 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} - {RHS}`"] |
| 259 | +#[rustc_on_unimplemented(message="cannot substract `{RHS}` from `{Self}`", |
| 260 | + label="no implementation for `{Self} - {RHS}`")] |
174 | 261 | pub trait Sub<RHS=Self> {
|
175 | 262 | /// The resulting type after applying the `-` operator.
|
176 | 263 | #[stable(feature = "rust1", since = "1.0.0")]
|
@@ -287,7 +374,8 @@ sub_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
287 | 374 | /// ```
|
288 | 375 | #[lang = "mul"]
|
289 | 376 | #[stable(feature = "rust1", since = "1.0.0")]
|
290 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} * {RHS}`"] |
| 377 | +#[rustc_on_unimplemented(message="cannot multiply `{RHS}` to `{Self}`", |
| 378 | + label="no implementation for `{Self} * {RHS}`")] |
291 | 379 | pub trait Mul<RHS=Self> {
|
292 | 380 | /// The resulting type after applying the `*` operator.
|
293 | 381 | #[stable(feature = "rust1", since = "1.0.0")]
|
@@ -408,7 +496,8 @@ mul_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
408 | 496 | /// ```
|
409 | 497 | #[lang = "div"]
|
410 | 498 | #[stable(feature = "rust1", since = "1.0.0")]
|
411 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} / {RHS}`"] |
| 499 | +#[rustc_on_unimplemented(message="cannot divide `{Self}` by `{RHS}`", |
| 500 | + label="no implementation for `{Self} / {RHS}`")] |
412 | 501 | pub trait Div<RHS=Self> {
|
413 | 502 | /// The resulting type after applying the `/` operator.
|
414 | 503 | #[stable(feature = "rust1", since = "1.0.0")]
|
@@ -490,7 +579,8 @@ div_impl_float! { f32 f64 }
|
490 | 579 | /// ```
|
491 | 580 | #[lang = "rem"]
|
492 | 581 | #[stable(feature = "rust1", since = "1.0.0")]
|
493 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} % {RHS}`"] |
| 582 | +#[rustc_on_unimplemented(message="cannot mod `{Self}` by `{RHS}`", |
| 583 | + label="no implementation for `{Self} % {RHS}`")] |
494 | 584 | pub trait Rem<RHS=Self> {
|
495 | 585 | /// The resulting type after applying the `%` operator.
|
496 | 586 | #[stable(feature = "rust1", since = "1.0.0")]
|
@@ -647,7 +737,8 @@ neg_impl_numeric! { isize i8 i16 i32 i64 i128 f32 f64 }
|
647 | 737 | /// ```
|
648 | 738 | #[lang = "add_assign"]
|
649 | 739 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
650 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} += {Rhs}`"] |
| 740 | +#[rustc_on_unimplemented(message="cannot add-assign `{Rhs}` to `{Self}`", |
| 741 | + label="no implementation for `{Self} += {Rhs}`")] |
651 | 742 | pub trait AddAssign<Rhs=Self> {
|
652 | 743 | /// Performs the `+=` operation.
|
653 | 744 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
@@ -700,7 +791,8 @@ add_assign_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
700 | 791 | /// ```
|
701 | 792 | #[lang = "sub_assign"]
|
702 | 793 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
703 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} -= {Rhs}`"] |
| 794 | +#[rustc_on_unimplemented(message="cannot substract-assign `{Rhs}` from `{Self}`", |
| 795 | + label="no implementation for `{Self} -= {Rhs}`")] |
704 | 796 | pub trait SubAssign<Rhs=Self> {
|
705 | 797 | /// Performs the `-=` operation.
|
706 | 798 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
@@ -744,7 +836,8 @@ sub_assign_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
744 | 836 | /// ```
|
745 | 837 | #[lang = "mul_assign"]
|
746 | 838 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
747 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} *= {Rhs}`"] |
| 839 | +#[rustc_on_unimplemented(message="cannot multiply-assign `{Rhs}` to `{Self}`", |
| 840 | + label="no implementation for `{Self} *= {Rhs}`")] |
748 | 841 | pub trait MulAssign<Rhs=Self> {
|
749 | 842 | /// Performs the `*=` operation.
|
750 | 843 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
@@ -788,7 +881,8 @@ mul_assign_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
788 | 881 | /// ```
|
789 | 882 | #[lang = "div_assign"]
|
790 | 883 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
791 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} /= {Rhs}`"] |
| 884 | +#[rustc_on_unimplemented(message="cannot divide-assign `{Self}` by `{Rhs}`", |
| 885 | + label="no implementation for `{Self} /= {Rhs}`")] |
792 | 886 | pub trait DivAssign<Rhs=Self> {
|
793 | 887 | /// Performs the `/=` operation.
|
794 | 888 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
@@ -835,7 +929,8 @@ div_assign_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
|
835 | 929 | /// ```
|
836 | 930 | #[lang = "rem_assign"]
|
837 | 931 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
838 |
| -#[rustc_on_unimplemented = "no implementation for `{Self} %= {Rhs}`"] |
| 932 | +#[rustc_on_unimplemented(message="cannot mod-assign `{Self}` by `{Rhs}``", |
| 933 | + label="no implementation for `{Self} %= {Rhs}`")] |
839 | 934 | pub trait RemAssign<Rhs=Self> {
|
840 | 935 | /// Performs the `%=` operation.
|
841 | 936 | #[stable(feature = "op_assign_traits", since = "1.8.0")]
|
|
0 commit comments