rstm_core/state/impls/
impl_ops.rs1use crate::state::State;
6
7impl<Q> core::ops::Neg for State<Q>
8where
9 Q: core::ops::Neg,
10{
11 type Output = State<Q::Output>;
12
13 fn neg(self) -> Self::Output {
14 State(core::ops::Neg::neg(self.0))
15 }
16}
17
18impl<'a, Q> core::ops::Neg for &'a State<Q>
19where
20 &'a Q: core::ops::Neg,
21{
22 type Output = State<<&'a Q as core::ops::Neg>::Output>;
23
24 fn neg(self) -> Self::Output {
25 State(core::ops::Neg::neg(self.get()))
26 }
27}
28
29impl<Q> core::ops::Not for State<Q>
30where
31 Q: core::ops::Not,
32{
33 type Output = State<Q::Output>;
34
35 fn not(self) -> Self::Output {
36 State(core::ops::Not::not(self.0))
37 }
38}
39
40impl<'a, Q> core::ops::Not for &'a State<Q>
41where
42 &'a Q: core::ops::Not,
43{
44 type Output = State<<&'a Q as core::ops::Not>::Output>;
45
46 fn not(self) -> Self::Output {
47 State(core::ops::Not::not(self.get()))
48 }
49}
50
51impl<Q> num_traits::Num for State<Q>
52where
53 Q: num_traits::Num,
54{
55 type FromStrRadixErr = Q::FromStrRadixErr;
56
57 fn from_str_radix(str: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr> {
58 Q::from_str_radix(str, radix).map(State)
59 }
60}
61
62impl<Q> num_traits::One for State<Q>
63where
64 Q: PartialEq + num_traits::One,
65{
66 fn one() -> Self {
67 State(Q::one())
68 }
69
70 fn is_one(&self) -> bool {
71 self.0.is_one()
72 }
73}
74
75impl<Q> num_traits::Zero for State<Q>
76where
77 Q: num_traits::Zero,
78{
79 fn zero() -> Self {
80 State(Q::zero())
81 }
82
83 fn is_zero(&self) -> bool {
84 self.0.is_zero()
85 }
86}
87
88impl_assign_op! {
89 State(
90 AddAssign::add_assign,
91 SubAssign::sub_assign,
92 MulAssign::mul_assign,
93 DivAssign::div_assign,
94 RemAssign::rem_assign,
95 BitAndAssign::bitand_assign,
96 BitOrAssign::bitor_assign,
97 BitXorAssign::bitxor_assign,
98 ShlAssign::shl_assign,
99 ShrAssign::shr_assign,
100 )
101}
102
103impl_bin_op! {
104 State(
105 Add::add,
106 Sub::sub,
107 Mul::mul,
108 Div::div,
109 Rem::rem,
110 BitAnd::bitand,
111 BitOr::bitor,
112 BitXor::bitxor,
113 Shl::shl,
114 Shr::shr,
115 )
116}