redstone_ml/util/
absolute.rs

1pub trait Absolute: Copy {
2    fn abs(&self) -> Self {
3        *self
4    }
5}
6
7impl Absolute for u8 {}
8impl Absolute for u16 {}
9impl Absolute for u32 {}
10impl Absolute for u64 {}
11impl Absolute for u128 {}
12impl Absolute for usize {}
13
14impl Absolute for i8 {
15    fn abs(&self) -> Self {
16        num::Signed::abs(self)
17    }
18}
19
20impl Absolute for i16 {
21    fn abs(&self) -> Self {
22        num::Signed::abs(self)
23    }
24}
25
26impl Absolute for i32 {
27    fn abs(&self) -> Self {
28        num::Signed::abs(self)
29    }
30}
31
32impl Absolute for i64 {
33    fn abs(&self) -> Self {
34        num::Signed::abs(self)
35    }
36}
37
38impl Absolute for i128 {
39    fn abs(&self) -> Self {
40        num::Signed::abs(self)
41    }
42}
43
44impl Absolute for isize {
45    fn abs(&self) -> Self {
46        num::Signed::abs(self)
47    }
48}
49
50impl Absolute for f32 {
51    fn abs(&self) -> Self {
52        num::Signed::abs(self)
53    }
54}
55
56impl Absolute for f64 {
57    fn abs(&self) -> Self {
58        num::Signed::abs(self)
59    }
60}