rstm_core/traits/
increment.rs1pub trait Decrement {
9 fn decrement(self) -> Self;
10}
11
12pub trait DecrementAssign {
15 fn decrement_assign(&mut self);
16}
17
18pub trait Increment {
21 fn increment(self) -> Self;
22}
23
24pub trait IncrementAssign {
27 fn increment_assign(&mut self);
28}
29
30pub trait Incremental: Decrement + Increment + DecrementAssign + IncrementAssign {}
32
33use num_traits::One;
37impl<T> Decrement for T
38where
39 T: One + core::ops::Sub<Output = T>,
40{
41 fn decrement(self) -> Self {
42 self - T::one()
43 }
44}
45
46impl<T> DecrementAssign for T
47where
48 T: One + core::ops::SubAssign,
49{
50 fn decrement_assign(&mut self) {
51 *self -= T::one();
52 }
53}
54
55impl<T> Increment for T
56where
57 T: One + core::ops::Add<Output = T>,
58{
59 fn increment(self) -> Self {
60 self + T::one()
61 }
62}
63
64impl<T> IncrementAssign for T
65where
66 T: One + core::ops::AddAssign,
67{
68 fn increment_assign(&mut self) {
69 *self += T::one();
70 }
71}
72
73impl<T> Incremental for T where T: Decrement + Increment + DecrementAssign + IncrementAssign {}