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);