Skip to content

Commit

Permalink
Impl {Add,Sub,Mul,Div,Rem,BitXor,BitOr,BitAnd}Assign<$t> for Wrapping…
Browse files Browse the repository at this point in the history
…<$t>

Analog to 1c0dc18 rust-lang#92356
  • Loading branch information
kellerkindt committed Jan 25, 2022
1 parent ecf7299 commit 9648b31
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions library/core/src/num/wrapping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const AddAssign, add_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const AddAssign<$t> for Wrapping<$t> {
#[inline]
fn add_assign(&mut self, other: $t) {
*self = *self + Wrapping(other);
}
}
forward_ref_op_assign! { impl const AddAssign, add_assign for Wrapping<$t>, $t }

#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Sub for Wrapping<$t> {
Expand All @@ -262,6 +272,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const SubAssign, sub_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const SubAssign<$t> for Wrapping<$t> {
#[inline]
fn sub_assign(&mut self, other: $t) {
*self = *self - Wrapping(other);
}
}
forward_ref_op_assign! { impl const SubAssign, sub_assign for Wrapping<$t>, $t }

#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Mul for Wrapping<$t> {
Expand All @@ -285,6 +305,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const MulAssign, mul_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const MulAssign<$t> for Wrapping<$t> {
#[inline]
fn mul_assign(&mut self, other: $t) {
*self = *self * Wrapping(other);
}
}
forward_ref_op_assign! { impl const MulAssign, mul_assign for Wrapping<$t>, $t }

#[stable(feature = "wrapping_div", since = "1.3.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Div for Wrapping<$t> {
Expand All @@ -308,6 +338,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const DivAssign, div_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const DivAssign<$t> for Wrapping<$t> {
#[inline]
fn div_assign(&mut self, other: $t) {
*self = *self / Wrapping(other);
}
}
forward_ref_op_assign! { impl const DivAssign, div_assign for Wrapping<$t>, $t }

#[stable(feature = "wrapping_impls", since = "1.7.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Rem for Wrapping<$t> {
Expand All @@ -331,6 +371,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const RemAssign, rem_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const RemAssign<$t> for Wrapping<$t> {
#[inline]
fn rem_assign(&mut self, other: $t) {
*self = *self % Wrapping(other);
}
}
forward_ref_op_assign! { impl const RemAssign, rem_assign for Wrapping<$t>, $t }

#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Not for Wrapping<$t> {
Expand Down Expand Up @@ -367,6 +417,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const BitXorAssign, bitxor_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const BitXorAssign<$t> for Wrapping<$t> {
#[inline]
fn bitxor_assign(&mut self, other: $t) {
*self = *self ^ Wrapping(other);
}
}
forward_ref_op_assign! { impl const BitXorAssign, bitxor_assign for Wrapping<$t>, $t }

#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const BitOr for Wrapping<$t> {
Expand All @@ -390,6 +450,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const BitOrAssign, bitor_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const BitOrAssign<$t> for Wrapping<$t> {
#[inline]
fn bitor_assign(&mut self, other: $t) {
*self = *self | Wrapping(other);
}
}
forward_ref_op_assign! { impl const BitOrAssign, bitor_assign for Wrapping<$t>, $t }

#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const BitAnd for Wrapping<$t> {
Expand All @@ -413,6 +483,16 @@ macro_rules! wrapping_impl {
}
forward_ref_op_assign! { impl const BitAndAssign, bitand_assign for Wrapping<$t>, Wrapping<$t> }

#[stable(feature = "wrapping_int_assign_impl", since = "1.61.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const BitAndAssign<$t> for Wrapping<$t> {
#[inline]
fn bitand_assign(&mut self, other: $t) {
*self = *self & Wrapping(other);
}
}
forward_ref_op_assign! { impl const BitAndAssign, bitand_assign for Wrapping<$t>, $t }

#[stable(feature = "wrapping_neg", since = "1.10.0")]
#[rustc_const_unstable(feature = "const_ops", issue = "90080")]
impl const Neg for Wrapping<$t> {
Expand Down

0 comments on commit 9648b31

Please sign in to comment.