pub trait SaturatingOps {
fn saturating_add(self, rhs: Self) -> Self;
fn saturating_sub(self, rhs: Self) -> Self;
fn saturating_mul(self, rhs: Self) -> Self;
fn saturating_div(self, rhs: Self) -> Self;
}
macro_rules! impl_saturating {
($($t:ty),*) => {
$(impl SaturatingOps for $t {
#[inline] fn saturating_add(self, rhs: Self) -> Self { self.saturating_add(rhs) }
#[inline] fn saturating_sub(self, rhs: Self) -> Self { self.saturating_sub(rhs) }
#[inline] fn saturating_mul(self, rhs: Self) -> Self { self.saturating_mul(rhs) }
#[inline] fn saturating_div(self, rhs: Self) -> Self { self.saturating_div(rhs) }
})*
};
}
impl_saturating!(u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize);