scsys_core/id/impls/
impl_id_ops.rs1use crate::id::Id;
6use num_traits::{Num, One, Zero};
7
8impl<T> One for Id<T>
9where
10 T: One,
11{
12 fn one() -> Self {
13 Id(T::one())
14 }
15}
16
17impl<T> Zero for Id<T>
18where
19 T: Zero,
20{
21 fn zero() -> Self {
22 Id(T::zero())
23 }
24
25 fn is_zero(&self) -> bool {
26 self.get().is_zero()
27 }
28}
29
30impl<T> Num for Id<T>
31where
32 T: Num,
33{
34 type FromStrRadixErr = T::FromStrRadixErr;
35
36 fn from_str_radix(s: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr> {
37 T::from_str_radix(s, radix).map(Id)
38 }
39}
40
41contained::binary_wrapper! {
42 impl Id {
43 Add.add,
44 Sub.sub,
45 Mul.mul,
46 Div.div,
47 Rem.rem,
48 BitAnd.bitand,
49 BitOr.bitor,
50 BitXor.bitxor,
51 Shl.shl,
52 Shr.shr
53 }
54}
55
56contained::unary_wrapper! {
57 impl Id {
58 Neg.neg,
59 Not.not
60 }
61}