tuwunel_core/utils/math/
expected.rs1use num_traits::ops::checked::{CheckedAdd, CheckedDiv, CheckedMul, CheckedRem, CheckedSub};
2
3use crate::expected;
4
5pub trait Expected {
6 #[inline]
7 #[must_use]
8 fn expected_add(self, rhs: Self) -> Self
9 where
10 Self: CheckedAdd + Sized,
11 {
12 expected!(self + rhs)
13 }
14
15 #[inline]
16 #[must_use]
17 fn expected_sub(self, rhs: Self) -> Self
18 where
19 Self: CheckedSub + Sized,
20 {
21 expected!(self - rhs)
22 }
23
24 #[inline]
25 #[must_use]
26 fn expected_mul(self, rhs: Self) -> Self
27 where
28 Self: CheckedMul + Sized,
29 {
30 expected!(self * rhs)
31 }
32
33 #[inline]
34 #[must_use]
35 fn expected_div(self, rhs: Self) -> Self
36 where
37 Self: CheckedDiv + Sized,
38 {
39 expected!(self / rhs)
40 }
41
42 #[inline]
43 #[must_use]
44 fn expected_rem(self, rhs: Self) -> Self
45 where
46 Self: CheckedRem + Sized,
47 {
48 expected!(self % rhs)
49 }
50}
51
52impl<T> Expected for T {}