1#[cfg(test)]
4mod tests;
5
6use crate::number::{
7 integer::{
8 macros::{
9 for_primitive, from_integer, from_primitive, try_for_primitive, try_from_any,
10 try_from_integer, try_from_primitive,
11 },
12 *,
13 },
14 traits::Number,
15};
16#[cfg(feature = "try_from")]
17use core::num::{NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8};
18use core::num::{NonZeroU128, NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8};
19
20from_primitive![non0 for: PositiveInteger+8, from: NonZeroU+8];
26from_primitive![non0 for: PositiveInteger+16, from: NonZeroU+8,16];
27from_primitive![non0 for: PositiveInteger+32, from: NonZeroU+8,16,32];
28from_primitive![non0 for: PositiveInteger+64, from: NonZeroU+8,16,32,64];
29from_primitive![non0 for: PositiveInteger+128, from: NonZeroU+8,16,32,64,128];
30try_from_primitive![non0 for: PositiveInteger+8, from: NonZeroU+16,32,64,128];
32try_from_primitive![non0 for: PositiveInteger+16, from: NonZeroU+32,64,128];
33try_from_primitive![non0 for: PositiveInteger+32, from: NonZeroU+64,128];
34try_from_primitive![non0 for: PositiveInteger+64, from: NonZeroU+128];
35
36try_from_primitive![int for:PositiveInteger+8, from:i+8,16,32,64,128];
40try_from_primitive![int for:PositiveInteger+16, from:i+8,16,32,64,128];
41try_from_primitive![int for:PositiveInteger+32, from:i+8,16,32,64,128];
42try_from_primitive![int for:PositiveInteger+64, from:i+8,16,32,64,128];
43try_from_primitive![int for:PositiveInteger+128, from:i+8,16,32,64,128];
44
45try_from_primitive![int for:PositiveInteger+8, from:u+8,16,32,64,128];
47try_from_primitive![int for:PositiveInteger+16, from:u+8,16,32,64,128];
48try_from_primitive![int for:PositiveInteger+32, from:u+8,16,32,64,128];
49try_from_primitive![int for:PositiveInteger+64, from:u+8,16,32,64,128];
50try_from_primitive![int for:PositiveInteger+128, from:u+8,16,32,64,128];
51
52try_from_primitive![non0 for: PositiveInteger+8, from: NonZeroI+8,16,32,64,128];
54try_from_primitive![non0 for: PositiveInteger+16, from: NonZeroI+8,16,32,64,128];
55try_from_primitive![non0 for: PositiveInteger+32, from: NonZeroI+8,16,32,64,128];
56try_from_primitive![non0 for: PositiveInteger+64, from: NonZeroI+8,16,32,64,128];
57try_from_primitive![non0 for: PositiveInteger+128, from: NonZeroI+8,16,32,64,128];
58
59from_integer![non0 for: PositiveInteger+16, from: PositiveInteger+8];
63from_integer![non0 for: PositiveInteger+32, from: PositiveInteger+8,16];
64from_integer![non0 for: PositiveInteger+64, from: PositiveInteger+8,16,32];
65from_integer![non0 for: PositiveInteger+128, from: PositiveInteger+8,16,32,64];
66try_from_integer![non0 for: PositiveInteger+8, from: PositiveInteger+16,32,64,128];
68try_from_integer![non0 for: PositiveInteger+16, from: PositiveInteger+32,64,128];
69try_from_integer![non0 for: PositiveInteger+32, from: PositiveInteger+64,128];
70try_from_integer![non0 for: PositiveInteger+64, from: PositiveInteger+128];
71
72from_integer![int_non0 for:PositiveInteger+8, from:Prime+8];
74from_integer![int_non0 for:PositiveInteger+16, from:Prime+8,16];
75from_integer![int_non0 for:PositiveInteger+32, from:Prime+8,16,32];
76from_integer![int_non0 for:PositiveInteger+64, from:Prime+8,16,32,64];
77from_integer![int_non0 for:PositiveInteger+128, from:Prime+8,16,32,64,128];
78try_from_integer![int_non0 for:PositiveInteger+8, from:Prime+16,32,64,128];
80try_from_integer![int_non0 for:PositiveInteger+16, from:Prime+32,64,128];
81try_from_integer![int_non0 for:PositiveInteger+32, from:Prime+64,128];
82try_from_integer![int_non0 for:PositiveInteger+64, from:Prime+128];
83
84try_from_integer![non0_int for: PositiveInteger+8, from: Integer+8,16,32,64,128];
88try_from_integer![non0_int for: PositiveInteger+16, from: Integer+8,16,32,64,128];
89try_from_integer![non0_int for: PositiveInteger+32, from: Integer+8,16,32,64,128];
90try_from_integer![non0_int for: PositiveInteger+64, from: Integer+8,16,32,64,128];
91try_from_integer![non0_int for: PositiveInteger+128, from: Integer+8,16,32,64,128];
92
93try_from_integer![int for: PositiveInteger+8, from: NonZeroInteger+8,16,32,64,128];
95try_from_integer![int for: PositiveInteger+16, from: NonZeroInteger+8,16,32,64,128];
96try_from_integer![int for: PositiveInteger+32, from: NonZeroInteger+8,16,32,64,128];
97try_from_integer![int for: PositiveInteger+64, from: NonZeroInteger+8,16,32,64,128];
98try_from_integer![int for: PositiveInteger+128, from: NonZeroInteger+8,16,32,64,128];
99
100try_from_any![error for: PositiveInteger+8, from: NegativeInteger+8,16,32,64,128];
104try_from_any![error for: PositiveInteger+16, from: NegativeInteger+8,16,32,64,128];
105try_from_any![error for: PositiveInteger+32, from: NegativeInteger+8,16,32,64,128];
106try_from_any![error for: PositiveInteger+64, from: NegativeInteger+8,16,32,64,128];
107try_from_any![error for: PositiveInteger+128, from: NegativeInteger+8,16,32,64,128];
108
109try_from_any![error for: PositiveInteger+8, from: NonPositiveInteger+8,16,32,64,128];
111try_from_any![error for: PositiveInteger+16, from: NonPositiveInteger+8,16,32,64,128];
112try_from_any![error for: PositiveInteger+32, from: NonPositiveInteger+8,16,32,64,128];
113try_from_any![error for: PositiveInteger+64, from: NonPositiveInteger+8,16,32,64,128];
114try_from_any![error for: PositiveInteger+128, from: NonPositiveInteger+8,16,32,64,128];
115
116for_primitive![int for:NonZeroU+8, from:PositiveInteger+8];
120for_primitive![int for:NonZeroU+16, from:PositiveInteger+8,16];
121for_primitive![int for:NonZeroU+32, from:PositiveInteger+8,16,32];
122for_primitive![int for:NonZeroU+64, from:PositiveInteger+8,16,32,64];
123for_primitive![int for:NonZeroU+128, from:PositiveInteger+8,16,32,64,128];
124try_for_primitive![int for:NonZeroU+8, from:PositiveInteger+16,32,64,128];
126try_for_primitive![int for:NonZeroU+16, from:PositiveInteger+32,64,128];
127try_for_primitive![int for:NonZeroU+32, from:PositiveInteger+64,128];
128try_for_primitive![int for:NonZeroU+64, from:PositiveInteger+128];
129
130for_primitive![non0 for:u+8, from:PositiveInteger+8];
132for_primitive![non0 for:u+16, from:PositiveInteger+8,16];
133for_primitive![non0 for:u+32, from:PositiveInteger+8,16,32];
134for_primitive![non0 for:u+64, from:PositiveInteger+8,16,32,64];
135for_primitive![non0 for:u+128, from:PositiveInteger+8,16,32,64,128];
136try_for_primitive![non0 for:u+8, from:PositiveInteger+16,32,64,128];
138try_for_primitive![non0 for:u+16, from:PositiveInteger+32,64,128];
139try_for_primitive![non0 for:u+32, from:PositiveInteger+64,128];
140try_for_primitive![non0 for:u+64, from:PositiveInteger+128];
141
142try_for_primitive![int for:NonZeroI+8, from:PositiveInteger+8,16,32,64,128];
144try_for_primitive![int for:NonZeroI+16, from:PositiveInteger+8,16,32,64,128];
145try_for_primitive![int for:NonZeroI+32, from:PositiveInteger+8,16,32,64,128];
146try_for_primitive![int for:NonZeroI+64, from:PositiveInteger+8,16,32,64,128];
147try_for_primitive![int for:NonZeroI+128, from:PositiveInteger+8,16,32,64,128];
148
149try_for_primitive![non0 for:i+8, from:PositiveInteger+8,16,32,64,128];
151try_for_primitive![non0 for:i+16, from:PositiveInteger+8,16,32,64,128];
152try_for_primitive![non0 for:i+32, from:PositiveInteger+8,16,32,64,128];
153try_for_primitive![non0 for:i+64, from:PositiveInteger+8,16,32,64,128];
154try_for_primitive![non0 for:i+128, from:PositiveInteger+8,16,32,64,128];