rutil 0.2.0

A library containing utilities for creating programs in rust.
Documentation
/// Saturating operations.
pub trait SaturatingOps {
    /// Saturating integer addition. Computes `self + rhs`, saturating at the numeric
    /// bounds instead of overflowing.
    fn saturating_add(self, rhs: Self) -> Self;

    /// Saturating integer subtraction. Computes `self - rhs`, saturating at the
    /// numeric bounds instead of overflowing.
    fn saturating_sub(self, rhs: Self) -> Self;

    /// Saturating integer multiplication. Computes `self * rhs`, saturating at the
    /// numeric bounds instead of overflowing.
    fn saturating_mul(self, rhs: Self) -> Self;

    /// Saturating integer division. Computes `self / rhs`, saturating at the
    /// numeric bounds instead of overflowing.
    fn saturating_div(self, rhs: Self) -> Self;
}

/// Implements [`SaturatingOps`].
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);