1pub trait CheckedDiv<RHS = Self>: Sized {
2 fn checked_div(self, rhs: RHS) -> Option<Self>;
3
4 fn checked_div_ceil(self, rhs: RHS) -> Option<Self>;
5}
6
7macro_rules! impl_checked_div {
8 ($($t:ty),+) => {$(
9 impl CheckedDiv for $t {
10 #[inline]
11 fn checked_div(self, rhs: Self) -> Option<Self> {
12 self.checked_div(rhs)
13 }
14
15 #[inline]
16 fn checked_div_ceil(self, rhs: Self) -> Option<Self> {
17 if rhs == 0 {
18 return None;
19 }
20 Some(self.div_ceil(rhs))
21 }
22 }
23 )+};
24}
25impl_checked_div!(u8, u16, u32, u64, u128);
26