reliq 0.3.6

A portable library of primitive-like constructs.
Documentation
macro_rules! r#impl {
    ($($ty:ident)*) => {
        $(
            impl CheckedAdd for $ty {
                #[inline]
                fn checked_add(self, rhs: Self) -> Option<Self> {
                    self.checked_add(rhs)
                }
            }

            impl CheckedSub for $ty {
                #[inline]
                fn checked_sub(self, rhs: Self) -> Option<Self> {
                    self.checked_sub(rhs)
                }
            }

            impl CheckedMul for $ty {
                #[inline]
                fn checked_mul(self, rhs: Self) -> Option<Self> {
                    self.checked_mul(rhs)
                }
            }

            impl CheckedDiv for $ty {
                #[inline]
                fn checked_div(self, rhs: Self) -> Option<Self> {
                    self.checked_div(rhs)
                }
            }

            impl CheckedRem for $ty {
                #[inline]
                fn checked_rem(self, rhs: Self) -> Option<Self> {
                    self.checked_rem(rhs)
                }
            }

            impl CheckedShl for $ty {
                #[inline]
                fn checked_shl(self, rhs: u32) -> Option<Self> {
                    self.checked_shl(rhs)
                }
            }

            impl CheckedShr for $ty {
                #[inline]
                fn checked_shr(self, rhs: u32) -> Option<Self> {
                    self.checked_shr(rhs)
                }
            }

            impl CheckedNeg for $ty {
                #[inline]
                fn checked_neg(self) -> Option<Self> {
                    self.checked_neg()
                }
            }
        )*
    };
}

pub trait CheckedAdd 
where
    Self: Sized {
    fn checked_add(self, rhs: Self) -> Option<Self>;
}

pub trait CheckedSub
where
    Self: Sized {
    fn checked_sub(self, rhs: Self) -> Option<Self>;
}

pub trait CheckedMul
where
    Self: Sized {
    fn checked_mul(self, rhs: Self) -> Option<Self>;
}

pub trait CheckedDiv
where
    Self: Sized {
    fn checked_div(self, rhs: Self) -> Option<Self>;
}

pub trait CheckedRem
where
    Self: Sized {
    fn checked_rem(self, rhs: Self) -> Option<Self>;
}

pub trait CheckedShl
where
    Self: Sized {
    fn checked_shl(self, rhs: u32) -> Option<Self>;
}

pub trait CheckedShr
where
    Self: Sized {
    fn checked_shr(self, rhs: u32) -> Option<Self>;
}

pub trait CheckedNeg
where
    Self: Sized {
    fn checked_neg(self) -> Option<Self>;
}

r#impl!(
    u8 u16 u32 u64 u128 usize
    i8 i16 i32 i64 i128 isize
);