defuse_num_utils/
mul.rs

1pub trait CheckedMul<RHS = Self>: Sized {
2    fn checked_mul(self, rhs: RHS) -> Option<Self>;
3
4    #[inline]
5    fn checked_mul_ceil(self, rhs: RHS) -> Option<Self> {
6        self.checked_mul(rhs)
7    }
8}
9
10macro_rules! impl_checked_mul {
11    ($($t:ty),+) => {$(
12        impl CheckedMul for $t {
13            #[inline]
14            fn checked_mul(self, rhs: Self) -> Option<Self> {
15                self.checked_mul(rhs)
16            }
17        }
18    )+};
19}
20impl_checked_mul!(u8, i8, u16, i16, u32, i32, u64, i64, u128, i128);