pub trait Saturating {
fn saturating_sub(self, other: Self) -> Self;
fn saturating_add(self, other: Self) -> Self;
fn saturating_mul(self, other: Self) -> Self;
}
macro_rules! impl_saturating {
($($i:ident),*) => {
$(impl Saturating for $i {
fn saturating_sub(self, other: Self) -> Self {
$i::saturating_sub(self, other)
}
fn saturating_add(self, other: Self) -> Self {
$i::saturating_add(self, other)
}
fn saturating_mul(self, other: Self) -> Self {
$i::saturating_mul(self, other)
}
})*
};
}
impl_saturating!(
u8, i8, u16, i16, u32, i32, u64, i64, usize, isize, u128, i128
);