use std::fmt::Display;
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub enum PosU128 {
#[default]
B0,
B1,
B2,
B3,
B4,
B5,
B6,
B7,
B8,
B9,
B10,
B11,
B12,
B13,
B14,
B15,
B16,
B17,
B18,
B19,
B20,
B21,
B22,
B23,
B24,
B25,
B26,
B27,
B28,
B29,
B30,
B31,
B32,
B33,
B34,
B35,
B36,
B37,
B38,
B39,
B40,
B41,
B42,
B43,
B44,
B45,
B46,
B47,
B48,
B49,
B50,
B51,
B52,
B53,
B54,
B55,
B56,
B57,
B58,
B59,
B60,
B61,
B62,
B63,
B64,
B65,
B66,
B67,
B68,
B69,
B70,
B71,
B72,
B73,
B74,
B75,
B76,
B77,
B78,
B79,
B80,
B81,
B82,
B83,
B84,
B85,
B86,
B87,
B88,
B89,
B90,
B91,
B92,
B93,
B94,
B95,
B96,
B97,
B98,
B99,
B100,
B101,
B102,
B103,
B104,
B105,
B106,
B107,
B108,
B109,
B110,
B111,
B112,
B113,
B114,
B115,
B116,
B117,
B118,
B119,
B120,
B121,
B122,
B123,
B124,
B125,
B126,
B127,
}
impl Display for PosU128 {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let as_u8 = u8::from(*self);
write!(f, "u128:Bit {as_u8}")
}
}
impl From<PosU128> for u8 {
fn from(value: PosU128) -> Self {
match value {
PosU128::B0 => 0,
PosU128::B1 => 1,
PosU128::B2 => 2,
PosU128::B3 => 3,
PosU128::B4 => 4,
PosU128::B5 => 5,
PosU128::B6 => 6,
PosU128::B7 => 7,
PosU128::B8 => 8,
PosU128::B9 => 9,
PosU128::B10 => 10,
PosU128::B11 => 11,
PosU128::B12 => 12,
PosU128::B13 => 13,
PosU128::B14 => 14,
PosU128::B15 => 15,
PosU128::B16 => 16,
PosU128::B17 => 17,
PosU128::B18 => 18,
PosU128::B19 => 19,
PosU128::B20 => 20,
PosU128::B21 => 21,
PosU128::B22 => 22,
PosU128::B23 => 23,
PosU128::B24 => 24,
PosU128::B25 => 25,
PosU128::B26 => 26,
PosU128::B27 => 27,
PosU128::B28 => 28,
PosU128::B29 => 29,
PosU128::B30 => 30,
PosU128::B31 => 31,
PosU128::B32 => 32,
PosU128::B33 => 33,
PosU128::B34 => 34,
PosU128::B35 => 35,
PosU128::B36 => 36,
PosU128::B37 => 37,
PosU128::B38 => 38,
PosU128::B39 => 39,
PosU128::B40 => 40,
PosU128::B41 => 41,
PosU128::B42 => 42,
PosU128::B43 => 43,
PosU128::B44 => 44,
PosU128::B45 => 45,
PosU128::B46 => 46,
PosU128::B47 => 47,
PosU128::B48 => 48,
PosU128::B49 => 49,
PosU128::B50 => 50,
PosU128::B51 => 51,
PosU128::B52 => 52,
PosU128::B53 => 53,
PosU128::B54 => 54,
PosU128::B55 => 55,
PosU128::B56 => 56,
PosU128::B57 => 57,
PosU128::B58 => 58,
PosU128::B59 => 59,
PosU128::B60 => 60,
PosU128::B61 => 61,
PosU128::B62 => 62,
PosU128::B63 => 63,
PosU128::B64 => 64,
PosU128::B65 => 65,
PosU128::B66 => 66,
PosU128::B67 => 67,
PosU128::B68 => 68,
PosU128::B69 => 69,
PosU128::B70 => 70,
PosU128::B71 => 71,
PosU128::B72 => 72,
PosU128::B73 => 73,
PosU128::B74 => 74,
PosU128::B75 => 75,
PosU128::B76 => 76,
PosU128::B77 => 77,
PosU128::B78 => 78,
PosU128::B79 => 79,
PosU128::B80 => 80,
PosU128::B81 => 81,
PosU128::B82 => 82,
PosU128::B83 => 83,
PosU128::B84 => 84,
PosU128::B85 => 85,
PosU128::B86 => 86,
PosU128::B87 => 87,
PosU128::B88 => 88,
PosU128::B89 => 89,
PosU128::B90 => 90,
PosU128::B91 => 91,
PosU128::B92 => 92,
PosU128::B93 => 93,
PosU128::B94 => 94,
PosU128::B95 => 95,
PosU128::B96 => 96,
PosU128::B97 => 97,
PosU128::B98 => 98,
PosU128::B99 => 99,
PosU128::B100 => 100,
PosU128::B101 => 101,
PosU128::B102 => 102,
PosU128::B103 => 103,
PosU128::B104 => 104,
PosU128::B105 => 105,
PosU128::B106 => 106,
PosU128::B107 => 107,
PosU128::B108 => 108,
PosU128::B109 => 109,
PosU128::B110 => 110,
PosU128::B111 => 111,
PosU128::B112 => 112,
PosU128::B113 => 113,
PosU128::B114 => 114,
PosU128::B115 => 115,
PosU128::B116 => 116,
PosU128::B117 => 117,
PosU128::B118 => 118,
PosU128::B119 => 119,
PosU128::B120 => 120,
PosU128::B121 => 121,
PosU128::B122 => 122,
PosU128::B123 => 123,
PosU128::B124 => 124,
PosU128::B125 => 125,
PosU128::B126 => 126,
PosU128::B127 => 127,
}
}
}
impl TryFrom<u8> for PosU128 {
type Error = &'static str;
fn try_from(value: u8) -> Result<Self, Self::Error> {
match value {
0 => Ok(PosU128::B0),
1 => Ok(PosU128::B1),
2 => Ok(PosU128::B2),
3 => Ok(PosU128::B3),
4 => Ok(PosU128::B4),
5 => Ok(PosU128::B5),
6 => Ok(PosU128::B6),
7 => Ok(PosU128::B7),
8 => Ok(PosU128::B8),
9 => Ok(PosU128::B9),
10 => Ok(PosU128::B10),
11 => Ok(PosU128::B11),
12 => Ok(PosU128::B12),
13 => Ok(PosU128::B13),
14 => Ok(PosU128::B14),
15 => Ok(PosU128::B15),
16 => Ok(PosU128::B16),
17 => Ok(PosU128::B17),
18 => Ok(PosU128::B18),
19 => Ok(PosU128::B19),
20 => Ok(PosU128::B20),
21 => Ok(PosU128::B21),
22 => Ok(PosU128::B22),
23 => Ok(PosU128::B23),
24 => Ok(PosU128::B24),
25 => Ok(PosU128::B25),
26 => Ok(PosU128::B26),
27 => Ok(PosU128::B27),
28 => Ok(PosU128::B28),
29 => Ok(PosU128::B29),
30 => Ok(PosU128::B30),
31 => Ok(PosU128::B31),
32 => Ok(PosU128::B32),
33 => Ok(PosU128::B33),
34 => Ok(PosU128::B34),
35 => Ok(PosU128::B35),
36 => Ok(PosU128::B36),
37 => Ok(PosU128::B37),
38 => Ok(PosU128::B38),
39 => Ok(PosU128::B39),
40 => Ok(PosU128::B40),
41 => Ok(PosU128::B41),
42 => Ok(PosU128::B42),
43 => Ok(PosU128::B43),
44 => Ok(PosU128::B44),
45 => Ok(PosU128::B45),
46 => Ok(PosU128::B46),
47 => Ok(PosU128::B47),
48 => Ok(PosU128::B48),
49 => Ok(PosU128::B49),
50 => Ok(PosU128::B50),
51 => Ok(PosU128::B51),
52 => Ok(PosU128::B52),
53 => Ok(PosU128::B53),
54 => Ok(PosU128::B54),
55 => Ok(PosU128::B55),
56 => Ok(PosU128::B56),
57 => Ok(PosU128::B57),
58 => Ok(PosU128::B58),
59 => Ok(PosU128::B59),
60 => Ok(PosU128::B60),
61 => Ok(PosU128::B61),
62 => Ok(PosU128::B62),
63 => Ok(PosU128::B63),
64 => Ok(PosU128::B64),
65 => Ok(PosU128::B65),
66 => Ok(PosU128::B66),
67 => Ok(PosU128::B67),
68 => Ok(PosU128::B68),
69 => Ok(PosU128::B69),
70 => Ok(PosU128::B70),
71 => Ok(PosU128::B71),
72 => Ok(PosU128::B72),
73 => Ok(PosU128::B73),
74 => Ok(PosU128::B74),
75 => Ok(PosU128::B75),
76 => Ok(PosU128::B76),
77 => Ok(PosU128::B77),
78 => Ok(PosU128::B78),
79 => Ok(PosU128::B79),
80 => Ok(PosU128::B80),
81 => Ok(PosU128::B81),
82 => Ok(PosU128::B82),
83 => Ok(PosU128::B83),
84 => Ok(PosU128::B84),
85 => Ok(PosU128::B85),
86 => Ok(PosU128::B86),
87 => Ok(PosU128::B87),
88 => Ok(PosU128::B88),
89 => Ok(PosU128::B89),
90 => Ok(PosU128::B90),
91 => Ok(PosU128::B91),
92 => Ok(PosU128::B92),
93 => Ok(PosU128::B93),
94 => Ok(PosU128::B94),
95 => Ok(PosU128::B95),
96 => Ok(PosU128::B96),
97 => Ok(PosU128::B97),
98 => Ok(PosU128::B98),
99 => Ok(PosU128::B99),
100 => Ok(PosU128::B100),
101 => Ok(PosU128::B101),
102 => Ok(PosU128::B102),
103 => Ok(PosU128::B103),
104 => Ok(PosU128::B104),
105 => Ok(PosU128::B105),
106 => Ok(PosU128::B106),
107 => Ok(PosU128::B107),
108 => Ok(PosU128::B108),
109 => Ok(PosU128::B109),
110 => Ok(PosU128::B110),
111 => Ok(PosU128::B111),
112 => Ok(PosU128::B112),
113 => Ok(PosU128::B113),
114 => Ok(PosU128::B114),
115 => Ok(PosU128::B115),
116 => Ok(PosU128::B116),
117 => Ok(PosU128::B117),
118 => Ok(PosU128::B118),
119 => Ok(PosU128::B119),
120 => Ok(PosU128::B120),
121 => Ok(PosU128::B121),
122 => Ok(PosU128::B122),
123 => Ok(PosU128::B123),
124 => Ok(PosU128::B124),
125 => Ok(PosU128::B125),
126 => Ok(PosU128::B126),
127 => Ok(PosU128::B127),
_ => Err("PosU128 can only be represented by the u8 values 0 to 127 (inclusive)!")
}
}
}