Let forward_ref_* macros accept multiple attributes, and require attributes explicitly

This commit is contained in:
ltdk 2025-07-14 19:59:25 -04:00
parent 41ede7bd9b
commit f604dd117d
5 changed files with 156 additions and 105 deletions

View file

@ -1,12 +1,8 @@
// implements the unary operator "op &T"
// based on "op T" where T is expected to be `Copy`able
macro_rules! forward_ref_unop {
(impl $imp:ident, $method:ident for $t:ty) => {
forward_ref_unop!(impl $imp, $method for $t,
#[stable(feature = "rust1", since = "1.0.0")]);
};
(impl $imp:ident, $method:ident for $t:ty, #[$attr:meta]) => {
#[$attr]
(impl $imp:ident, $method:ident for $t:ty, $(#[$attr:meta])+) => {
$(#[$attr])+
impl $imp for &$t {
type Output = <$t as $imp>::Output;
@ -21,12 +17,8 @@ macro_rules! forward_ref_unop {
// implements binary operators "&T op U", "T op &U", "&T op &U"
// based on "T op U" where T and U are expected to be `Copy`able
macro_rules! forward_ref_binop {
(impl $imp:ident, $method:ident for $t:ty, $u:ty) => {
forward_ref_binop!(impl $imp, $method for $t, $u,
#[stable(feature = "rust1", since = "1.0.0")]);
};
(impl $imp:ident, $method:ident for $t:ty, $u:ty, #[$attr:meta]) => {
#[$attr]
(impl $imp:ident, $method:ident for $t:ty, $u:ty, $(#[$attr:meta])+) => {
$(#[$attr])+
impl<'a> $imp<$u> for &'a $t {
type Output = <$t as $imp<$u>>::Output;
@ -37,7 +29,7 @@ macro_rules! forward_ref_binop {
}
}
#[$attr]
$(#[$attr])+
impl $imp<&$u> for $t {
type Output = <$t as $imp<$u>>::Output;
@ -48,7 +40,7 @@ macro_rules! forward_ref_binop {
}
}
#[$attr]
$(#[$attr])+
impl $imp<&$u> for &$t {
type Output = <$t as $imp<$u>>::Output;
@ -64,12 +56,8 @@ macro_rules! forward_ref_binop {
// implements "T op= &U", based on "T op= U"
// where U is expected to be `Copy`able
macro_rules! forward_ref_op_assign {
(impl $imp:ident, $method:ident for $t:ty, $u:ty) => {
forward_ref_op_assign!(impl $imp, $method for $t, $u,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")]);
};
(impl $imp:ident, $method:ident for $t:ty, $u:ty, #[$attr:meta]) => {
#[$attr]
(impl $imp:ident, $method:ident for $t:ty, $u:ty, $(#[$attr:meta])+) => {
$(#[$attr])+
impl $imp<&$u> for $t {
#[inline]
#[track_caller]

View file

@ -109,7 +109,8 @@ impl<T: fmt::UpperHex> fmt::UpperHex for Saturating<T> {
// // *self = *self << other;
// // }
// // }
// // forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f }
// // forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f,
// // #[unstable(feature = "saturating_int_impl", issue = "87920")] }
//
// #[unstable(feature = "saturating_int_impl", issue = "87920")]
// impl Shr<$f> for Saturating<$t> {
@ -134,7 +135,8 @@ impl<T: fmt::UpperHex> fmt::UpperHex for Saturating<T> {
// *self = *self >> other;
// }
// }
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f }
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f,
// #[unstable(feature = "saturating_int_impl", issue = "87920")] }
// };
// }
//
@ -159,7 +161,8 @@ impl<T: fmt::UpperHex> fmt::UpperHex for Saturating<T> {
// *self = *self << other;
// }
// }
// forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f }
// forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f,
// #[unstable(feature = "saturating_int_impl", issue = "87920")] }
//
// #[unstable(feature = "saturating_int_impl", issue = "87920")]
// impl Shr<$f> for Saturating<$t> {
@ -180,7 +183,8 @@ impl<T: fmt::UpperHex> fmt::UpperHex for Saturating<T> {
// *self = *self >> other;
// }
// }
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f }
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f,
// #[unstable(feature = "saturating_int_impl", issue = "87920")] }
// };
// }
//
@ -218,7 +222,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl Add, add for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl AddAssign for Saturating<$t> {
@ -227,7 +231,8 @@ macro_rules! saturating_impl {
*self = *self + other;
}
}
forward_ref_op_assign! { impl AddAssign, add_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl AddAssign, add_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl AddAssign<$t> for Saturating<$t> {
@ -236,7 +241,8 @@ macro_rules! saturating_impl {
*self = *self + Saturating(other);
}
}
forward_ref_op_assign! { impl AddAssign, add_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl AddAssign, add_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl Sub for Saturating<$t> {
@ -248,7 +254,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl Sub, sub for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl SubAssign for Saturating<$t> {
@ -257,7 +263,8 @@ macro_rules! saturating_impl {
*self = *self - other;
}
}
forward_ref_op_assign! { impl SubAssign, sub_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl SubAssign, sub_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl SubAssign<$t> for Saturating<$t> {
@ -266,7 +273,8 @@ macro_rules! saturating_impl {
*self = *self - Saturating(other);
}
}
forward_ref_op_assign! { impl SubAssign, sub_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl SubAssign, sub_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl Mul for Saturating<$t> {
@ -278,7 +286,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl Mul, mul for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl MulAssign for Saturating<$t> {
@ -287,7 +295,8 @@ macro_rules! saturating_impl {
*self = *self * other;
}
}
forward_ref_op_assign! { impl MulAssign, mul_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl MulAssign, mul_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl MulAssign<$t> for Saturating<$t> {
@ -296,7 +305,8 @@ macro_rules! saturating_impl {
*self = *self * Saturating(other);
}
}
forward_ref_op_assign! { impl MulAssign, mul_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl MulAssign, mul_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
/// # Examples
///
@ -323,8 +333,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl Div, div for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl DivAssign for Saturating<$t> {
@ -333,7 +342,8 @@ macro_rules! saturating_impl {
*self = *self / other;
}
}
forward_ref_op_assign! { impl DivAssign, div_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl DivAssign, div_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl DivAssign<$t> for Saturating<$t> {
@ -342,7 +352,8 @@ macro_rules! saturating_impl {
*self = *self / Saturating(other);
}
}
forward_ref_op_assign! { impl DivAssign, div_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl DivAssign, div_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl Rem for Saturating<$t> {
@ -354,7 +365,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl Rem, rem for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl RemAssign for Saturating<$t> {
@ -363,7 +374,8 @@ macro_rules! saturating_impl {
*self = *self % other;
}
}
forward_ref_op_assign! { impl RemAssign, rem_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl RemAssign, rem_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl RemAssign<$t> for Saturating<$t> {
@ -372,7 +384,8 @@ macro_rules! saturating_impl {
*self = *self % Saturating(other);
}
}
forward_ref_op_assign! { impl RemAssign, rem_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl RemAssign, rem_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl Not for Saturating<$t> {
@ -384,7 +397,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_unop! { impl Not, not for Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitXor for Saturating<$t> {
@ -396,7 +409,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl BitXor, bitxor for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitXorAssign for Saturating<$t> {
@ -405,7 +418,8 @@ macro_rules! saturating_impl {
*self = *self ^ other;
}
}
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl BitXorAssign<$t> for Saturating<$t> {
@ -414,7 +428,8 @@ macro_rules! saturating_impl {
*self = *self ^ Saturating(other);
}
}
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitOr for Saturating<$t> {
@ -426,7 +441,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl BitOr, bitor for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitOrAssign for Saturating<$t> {
@ -435,7 +450,8 @@ macro_rules! saturating_impl {
*self = *self | other;
}
}
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl BitOrAssign<$t> for Saturating<$t> {
@ -444,7 +460,8 @@ macro_rules! saturating_impl {
*self = *self | Saturating(other);
}
}
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitAnd for Saturating<$t> {
@ -456,7 +473,7 @@ macro_rules! saturating_impl {
}
}
forward_ref_binop! { impl BitAnd, bitand for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")]
impl BitAndAssign for Saturating<$t> {
@ -465,7 +482,8 @@ macro_rules! saturating_impl {
*self = *self & other;
}
}
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Saturating<$t>, Saturating<$t> }
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Saturating<$t>, Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_assign_impl", since = "1.74.0")]
impl BitAndAssign<$t> for Saturating<$t> {
@ -474,7 +492,8 @@ macro_rules! saturating_impl {
*self = *self & Saturating(other);
}
}
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Saturating<$t>, $t }
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Saturating<$t>, $t,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
)*)
}
@ -939,7 +958,7 @@ macro_rules! saturating_int_impl_signed {
}
}
forward_ref_unop! { impl Neg, neg for Saturating<$t>,
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
#[stable(feature = "saturating_int_impl", since = "1.74.0")] }
)*)
}

View file

@ -110,7 +110,8 @@ macro_rules! sh_impl_signed {
*self = *self << other;
}
}
forward_ref_op_assign! { impl ShlAssign, shl_assign for Wrapping<$t>, $f }
forward_ref_op_assign! { impl ShlAssign, shl_assign for Wrapping<$t>, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl Shr<$f> for Wrapping<$t> {
@ -135,7 +136,8 @@ macro_rules! sh_impl_signed {
*self = *self >> other;
}
}
forward_ref_op_assign! { impl ShrAssign, shr_assign for Wrapping<$t>, $f }
forward_ref_op_assign! { impl ShrAssign, shr_assign for Wrapping<$t>, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
};
}
@ -160,7 +162,8 @@ macro_rules! sh_impl_unsigned {
*self = *self << other;
}
}
forward_ref_op_assign! { impl ShlAssign, shl_assign for Wrapping<$t>, $f }
forward_ref_op_assign! { impl ShlAssign, shl_assign for Wrapping<$t>, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl Shr<$f> for Wrapping<$t> {
@ -181,7 +184,8 @@ macro_rules! sh_impl_unsigned {
*self = *self >> other;
}
}
forward_ref_op_assign! { impl ShrAssign, shr_assign for Wrapping<$t>, $f }
forward_ref_op_assign! { impl ShrAssign, shr_assign for Wrapping<$t>, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
};
}
@ -219,7 +223,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl Add, add for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl AddAssign for Wrapping<$t> {
@ -228,7 +232,8 @@ macro_rules! wrapping_impl {
*self = *self + other;
}
}
forward_ref_op_assign! { impl AddAssign, add_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl AddAssign, add_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl AddAssign<$t> for Wrapping<$t> {
@ -237,7 +242,8 @@ macro_rules! wrapping_impl {
*self = *self + Wrapping(other);
}
}
forward_ref_op_assign! { impl AddAssign, add_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl AddAssign, add_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl Sub for Wrapping<$t> {
@ -249,7 +255,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl Sub, sub for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl SubAssign for Wrapping<$t> {
@ -258,7 +264,8 @@ macro_rules! wrapping_impl {
*self = *self - other;
}
}
forward_ref_op_assign! { impl SubAssign, sub_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl SubAssign, sub_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl SubAssign<$t> for Wrapping<$t> {
@ -267,7 +274,8 @@ macro_rules! wrapping_impl {
*self = *self - Wrapping(other);
}
}
forward_ref_op_assign! { impl SubAssign, sub_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl SubAssign, sub_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl Mul for Wrapping<$t> {
@ -279,7 +287,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl Mul, mul for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl MulAssign for Wrapping<$t> {
@ -288,7 +296,8 @@ macro_rules! wrapping_impl {
*self = *self * other;
}
}
forward_ref_op_assign! { impl MulAssign, mul_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl MulAssign, mul_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl MulAssign<$t> for Wrapping<$t> {
@ -297,7 +306,8 @@ macro_rules! wrapping_impl {
*self = *self * Wrapping(other);
}
}
forward_ref_op_assign! { impl MulAssign, mul_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl MulAssign, mul_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_div", since = "1.3.0")]
impl Div for Wrapping<$t> {
@ -309,7 +319,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl Div, div for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl DivAssign for Wrapping<$t> {
@ -318,7 +328,8 @@ macro_rules! wrapping_impl {
*self = *self / other;
}
}
forward_ref_op_assign! { impl DivAssign, div_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl DivAssign, div_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl DivAssign<$t> for Wrapping<$t> {
@ -327,7 +338,8 @@ macro_rules! wrapping_impl {
*self = *self / Wrapping(other);
}
}
forward_ref_op_assign! { impl DivAssign, div_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl DivAssign, div_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_impls", since = "1.7.0")]
impl Rem for Wrapping<$t> {
@ -339,7 +351,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl Rem, rem for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl RemAssign for Wrapping<$t> {
@ -348,7 +360,8 @@ macro_rules! wrapping_impl {
*self = *self % other;
}
}
forward_ref_op_assign! { impl RemAssign, rem_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl RemAssign, rem_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl RemAssign<$t> for Wrapping<$t> {
@ -357,7 +370,8 @@ macro_rules! wrapping_impl {
*self = *self % Wrapping(other);
}
}
forward_ref_op_assign! { impl RemAssign, rem_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl RemAssign, rem_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl Not for Wrapping<$t> {
@ -369,7 +383,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_unop! { impl Not, not for Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl BitXor for Wrapping<$t> {
@ -381,7 +395,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl BitXor, bitxor for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl BitXorAssign for Wrapping<$t> {
@ -390,7 +404,8 @@ macro_rules! wrapping_impl {
*self = *self ^ other;
}
}
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl BitXorAssign<$t> for Wrapping<$t> {
@ -399,7 +414,8 @@ macro_rules! wrapping_impl {
*self = *self ^ Wrapping(other);
}
}
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl BitOr for Wrapping<$t> {
@ -411,7 +427,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl BitOr, bitor for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl BitOrAssign for Wrapping<$t> {
@ -420,7 +436,8 @@ macro_rules! wrapping_impl {
*self = *self | other;
}
}
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl BitOrAssign<$t> for Wrapping<$t> {
@ -429,7 +446,8 @@ macro_rules! wrapping_impl {
*self = *self | Wrapping(other);
}
}
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "rust1", since = "1.0.0")]
impl BitAnd for Wrapping<$t> {
@ -441,7 +459,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_binop! { impl BitAnd, bitand for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "op_assign_traits", since = "1.8.0")]
impl BitAndAssign for Wrapping<$t> {
@ -450,7 +468,8 @@ macro_rules! wrapping_impl {
*self = *self & other;
}
}
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Wrapping<$t>, Wrapping<$t> }
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Wrapping<$t>, Wrapping<$t>,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_int_assign_impl", since = "1.60.0")]
impl BitAndAssign<$t> for Wrapping<$t> {
@ -459,7 +478,8 @@ macro_rules! wrapping_impl {
*self = *self & Wrapping(other);
}
}
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Wrapping<$t>, $t }
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for Wrapping<$t>, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
#[stable(feature = "wrapping_neg", since = "1.10.0")]
impl Neg for Wrapping<$t> {
@ -470,7 +490,7 @@ macro_rules! wrapping_impl {
}
}
forward_ref_unop! { impl Neg, neg for Wrapping<$t>,
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
#[stable(feature = "wrapping_ref", since = "1.14.0")] }
)*)
}

View file

@ -106,7 +106,8 @@ macro_rules! add_impl {
fn add(self, other: $t) -> $t { self + other }
}
forward_ref_binop! { impl Add, add for $t, $t }
forward_ref_binop! { impl Add, add for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -218,7 +219,8 @@ macro_rules! sub_impl {
fn sub(self, other: $t) -> $t { self - other }
}
forward_ref_binop! { impl Sub, sub for $t, $t }
forward_ref_binop! { impl Sub, sub for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -351,7 +353,8 @@ macro_rules! mul_impl {
fn mul(self, other: $t) -> $t { self * other }
}
forward_ref_binop! { impl Mul, mul for $t, $t }
forward_ref_binop! { impl Mul, mul for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -493,7 +496,8 @@ macro_rules! div_impl_integer {
fn div(self, other: $t) -> $t { self / other }
}
forward_ref_binop! { impl Div, div for $t, $t }
forward_ref_binop! { impl Div, div for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)*)
}
@ -513,7 +517,8 @@ macro_rules! div_impl_float {
fn div(self, other: $t) -> $t { self / other }
}
forward_ref_binop! { impl Div, div for $t, $t }
forward_ref_binop! { impl Div, div for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -599,7 +604,8 @@ macro_rules! rem_impl_integer {
fn rem(self, other: $t) -> $t { self % other }
}
forward_ref_binop! { impl Rem, rem for $t, $t }
forward_ref_binop! { impl Rem, rem for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)*)
}
@ -634,7 +640,8 @@ macro_rules! rem_impl_float {
fn rem(self, other: $t) -> $t { self % other }
}
forward_ref_binop! { impl Rem, rem for $t, $t }
forward_ref_binop! { impl Rem, rem for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -709,7 +716,8 @@ macro_rules! neg_impl {
fn neg(self) -> $t { -self }
}
forward_ref_unop! { impl Neg, neg for $t }
forward_ref_unop! { impl Neg, neg for $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -776,7 +784,8 @@ macro_rules! add_assign_impl {
fn add_assign(&mut self, other: $t) { *self += other }
}
forward_ref_op_assign! { impl AddAssign, add_assign for $t, $t }
forward_ref_op_assign! { impl AddAssign, add_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -843,7 +852,8 @@ macro_rules! sub_assign_impl {
fn sub_assign(&mut self, other: $t) { *self -= other }
}
forward_ref_op_assign! { impl SubAssign, sub_assign for $t, $t }
forward_ref_op_assign! { impl SubAssign, sub_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -901,7 +911,8 @@ macro_rules! mul_assign_impl {
fn mul_assign(&mut self, other: $t) { *self *= other }
}
forward_ref_op_assign! { impl MulAssign, mul_assign for $t, $t }
forward_ref_op_assign! { impl MulAssign, mul_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -958,7 +969,8 @@ macro_rules! div_assign_impl {
fn div_assign(&mut self, other: $t) { *self /= other }
}
forward_ref_op_assign! { impl DivAssign, div_assign for $t, $t }
forward_ref_op_assign! { impl DivAssign, div_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -1019,7 +1031,8 @@ macro_rules! rem_assign_impl {
fn rem_assign(&mut self, other: $t) { *self %= other }
}
forward_ref_op_assign! { impl RemAssign, rem_assign for $t, $t }
forward_ref_op_assign! { impl RemAssign, rem_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}

View file

@ -61,7 +61,8 @@ macro_rules! not_impl {
fn not(self) -> $t { !self }
}
forward_ref_unop! { impl Not, not for $t }
forward_ref_unop! { impl Not, not for $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -171,7 +172,8 @@ macro_rules! bitand_impl {
fn bitand(self, rhs: $t) -> $t { self & rhs }
}
forward_ref_binop! { impl BitAnd, bitand for $t, $t }
forward_ref_binop! { impl BitAnd, bitand for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -271,7 +273,8 @@ macro_rules! bitor_impl {
fn bitor(self, rhs: $t) -> $t { self | rhs }
}
forward_ref_binop! { impl BitOr, bitor for $t, $t }
forward_ref_binop! { impl BitOr, bitor for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -371,7 +374,8 @@ macro_rules! bitxor_impl {
fn bitxor(self, other: $t) -> $t { self ^ other }
}
forward_ref_binop! { impl BitXor, bitxor for $t, $t }
forward_ref_binop! { impl BitXor, bitxor for $t, $t,
#[stable(feature = "rust1", since = "1.0.0")] }
)*)
}
@ -471,7 +475,8 @@ macro_rules! shl_impl {
}
}
forward_ref_binop! { impl Shl, shl for $t, $f }
forward_ref_binop! { impl Shl, shl for $t, $f,
#[stable(feature = "rust1", since = "1.0.0")] }
};
}
@ -589,7 +594,8 @@ macro_rules! shr_impl {
}
}
forward_ref_binop! { impl Shr, shr for $t, $f }
forward_ref_binop! { impl Shr, shr for $t, $f,
#[stable(feature = "rust1", since = "1.0.0")] }
};
}
@ -719,7 +725,8 @@ macro_rules! bitand_assign_impl {
fn bitand_assign(&mut self, other: $t) { *self &= other }
}
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for $t, $t }
forward_ref_op_assign! { impl BitAndAssign, bitand_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -790,7 +797,8 @@ macro_rules! bitor_assign_impl {
fn bitor_assign(&mut self, other: $t) { *self |= other }
}
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for $t, $t }
forward_ref_op_assign! { impl BitOrAssign, bitor_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -861,7 +869,8 @@ macro_rules! bitxor_assign_impl {
fn bitxor_assign(&mut self, other: $t) { *self ^= other }
}
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for $t, $t }
forward_ref_op_assign! { impl BitXorAssign, bitxor_assign for $t, $t,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
)+)
}
@ -925,7 +934,8 @@ macro_rules! shl_assign_impl {
}
}
forward_ref_op_assign! { impl ShlAssign, shl_assign for $t, $f }
forward_ref_op_assign! { impl ShlAssign, shl_assign for $t, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
};
}
@ -1007,7 +1017,8 @@ macro_rules! shr_assign_impl {
}
}
forward_ref_op_assign! { impl ShrAssign, shr_assign for $t, $f }
forward_ref_op_assign! { impl ShrAssign, shr_assign for $t, $f,
#[stable(feature = "op_assign_builtins_by_ref", since = "1.22.0")] }
};
}