Skip to main content

tuwunel_core/utils/math/
expected.rs

1use 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 {}