From 7861121ae441f94a03b2de8ac1e61ec4fbf1e4cf Mon Sep 17 00:00:00 2001 From: Michael Watzko Date: Thu, 12 Aug 2021 12:28:30 +0200 Subject: [PATCH] Add naive remainder impl to Saturating --- library/core/src/num/saturating.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/library/core/src/num/saturating.rs b/library/core/src/num/saturating.rs index 9f4d7104fa5a..b0a172c72d0b 100644 --- a/library/core/src/num/saturating.rs +++ b/library/core/src/num/saturating.rs @@ -3,7 +3,7 @@ use crate::fmt; use crate::ops::{Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign}; use crate::ops::{BitXor, BitXorAssign, Div, DivAssign}; -use crate::ops::{Mul, MulAssign, Neg, Not}; +use crate::ops::{Mul, MulAssign, Neg, Not, Rem, RemAssign}; use crate::ops::{Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign}; /// Provides intentionally-wrapped arithmetic on `T`. @@ -288,6 +288,27 @@ fn div_assign(&mut self, other: Saturating<$t>) { } forward_ref_op_assign! { impl DivAssign, div_assign for Saturating<$t>, Saturating<$t> } + #[unstable(feature = "saturating_int_impl", issue = "87920")] + impl Rem for Saturating<$t> { + type Output = Saturating<$t>; + + #[inline] + fn rem(self, other: Saturating<$t>) -> Saturating<$t> { + Saturating(self.0.rem(other.0)) + } + } + forward_ref_binop! { impl Rem, rem for Saturating<$t>, Saturating<$t>, + #[unstable(feature = "saturating_int_impl", issue = "87920")] } + + #[unstable(feature = "saturating_int_impl", issue = "87920")] + impl RemAssign for Saturating<$t> { + #[inline] + fn rem_assign(&mut self, other: Saturating<$t>) { + *self = *self % other; + } + } + forward_ref_op_assign! { impl RemAssign, rem_assign for Saturating<$t>, Saturating<$t> } + #[unstable(feature = "saturating_int_impl", issue = "87920")] impl Not for Saturating<$t> { type Output = Saturating<$t>;