1#[cfg(test)]
4mod tests;
5
6#[cfg(feature = "try_from")]
7use crate::number::traits::{ConstZero, Ident};
8use crate::number::{
9 integer::{
10 macros::{
11 from_integer, try_for_primitive, try_from_any, try_from_integer, try_from_primitive,
12 },
13 *,
14 },
15 traits::Number,
16};
17#[cfg(feature = "try_from")]
18use core::{
19 num::{
20 NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroU128, NonZeroU16,
21 NonZeroU32, NonZeroU64, NonZeroU8,
22 },
23 ops::Neg,
24};
25
26try_from_primitive![neg_int for: NonPositiveInteger+8, from: i+8,16,32,64,128];
32try_from_primitive![neg_int for: NonPositiveInteger+16, from: i+8,16,32,64,128];
33try_from_primitive![neg_int for: NonPositiveInteger+32, from: i+8,16,32,64,128];
34try_from_primitive![neg_int for: NonPositiveInteger+64, from: i+8,16,32,64,128];
35try_from_primitive![neg_int for: NonPositiveInteger+128, from: i+8,16,32,64,128];
36
37try_from_any![zero for: NonPositiveInteger+8, from: u+8,16,32,64,128];
39try_from_any![zero for: NonPositiveInteger+16, from: u+8,16,32,64,128];
40try_from_any![zero for: NonPositiveInteger+32, from: u+8,16,32,64,128];
41try_from_any![zero for: NonPositiveInteger+64, from: u+8,16,32,64,128];
42try_from_any![zero for: NonPositiveInteger+128, from: u+8,16,32,64,128];
43
44try_from_primitive![non0_pos for: NonPositiveInteger+8, from: NonZeroI+8,16,32,64,128];
46try_from_primitive![non0_pos for: NonPositiveInteger+16, from: NonZeroI+8,16,32,64,128];
47try_from_primitive![non0_pos for: NonPositiveInteger+32, from: NonZeroI+8,16,32,64,128];
48try_from_primitive![non0_pos for: NonPositiveInteger+64, from: NonZeroI+8,16,32,64,128];
49try_from_primitive![non0_pos for: NonPositiveInteger+128, from: NonZeroI+8,16,32,64,128];
50
51try_from_any![error for: NonPositiveInteger+8, from: NonZeroU+8,16,32,64,128];
55try_from_any![error for: NonPositiveInteger+16, from: NonZeroU+8,16,32,64,128];
56try_from_any![error for: NonPositiveInteger+32, from: NonZeroU+8,16,32,64,128];
57try_from_any![error for: NonPositiveInteger+64, from: NonZeroU+8,16,32,64,128];
58try_from_any![error for: NonPositiveInteger+128, from: NonZeroU+8,16,32,64,128];
59
60from_integer![int for: NonPositiveInteger+16, from: NonPositiveInteger+8];
64from_integer![int for: NonPositiveInteger+32, from: NonPositiveInteger+8,16];
65from_integer![int for: NonPositiveInteger+64, from: NonPositiveInteger+8,16,32];
66from_integer![int for: NonPositiveInteger+128, from: NonPositiveInteger+8,16,32,64];
67try_from_integer![int for: NonPositiveInteger+8, from: NonPositiveInteger+16,32,64,128];
69try_from_integer![int for: NonPositiveInteger+16, from: NonPositiveInteger+32,64,128];
70try_from_integer![int for: NonPositiveInteger+32, from: NonPositiveInteger+64,128];
71try_from_integer![int for: NonPositiveInteger+64, from: NonPositiveInteger+128];
72
73from_integer![non0 for: NonPositiveInteger+8, from: NegativeInteger+8];
75from_integer![non0 for: NonPositiveInteger+16, from: NegativeInteger+8,16];
76from_integer![non0 for: NonPositiveInteger+32, from: NegativeInteger+8,16,32];
77from_integer![non0 for: NonPositiveInteger+64, from: NegativeInteger+8,16,32,64];
78from_integer![non0 for: NonPositiveInteger+128, from: NegativeInteger+8,16,32,64,128];
79try_from_integer![non0 for: NonPositiveInteger+8, from: NegativeInteger+16,32,64,128];
81try_from_integer![non0 for: NonPositiveInteger+16, from: NegativeInteger+32,64,128];
82try_from_integer![non0 for: NonPositiveInteger+32, from: NegativeInteger+64,128];
83try_from_integer![non0 for: NonPositiveInteger+64, from: NegativeInteger+128];
84
85try_from_integer![neg_int for: NonPositiveInteger+8, from: Integer+8,16,32,64,128];
89try_from_integer![neg_int for: NonPositiveInteger+16, from: Integer+8,16,32,64,128];
90try_from_integer![neg_int for: NonPositiveInteger+32, from: Integer+8,16,32,64,128];
91try_from_integer![neg_int for: NonPositiveInteger+64, from: Integer+8,16,32,64,128];
92try_from_integer![neg_int for: NonPositiveInteger+128, from: Integer+8,16,32,64,128];
93
94try_from_integer![non0_pos for: NonPositiveInteger+8, from: NonZeroInteger+8,16,32,64,128];
96try_from_integer![non0_pos for: NonPositiveInteger+16, from: NonZeroInteger+8,16,32,64,128];
97try_from_integer![non0_pos for: NonPositiveInteger+32, from: NonZeroInteger+8,16,32,64,128];
98try_from_integer![non0_pos for: NonPositiveInteger+64, from: NonZeroInteger+8,16,32,64,128];
99try_from_integer![non0_pos for: NonPositiveInteger+128, from: NonZeroInteger+8,16,32,64,128];
100
101try_from_any![zero for: NonPositiveInteger+8, from: NonNegativeInteger+8,16,32,64,128];
103try_from_any![zero for: NonPositiveInteger+16, from: NonNegativeInteger+8,16,32,64,128];
104try_from_any![zero for: NonPositiveInteger+32, from: NonNegativeInteger+8,16,32,64,128];
105try_from_any![zero for: NonPositiveInteger+64, from: NonNegativeInteger+8,16,32,64,128];
106try_from_any![zero for: NonPositiveInteger+128, from: NonNegativeInteger+8,16,32,64,128];
107
108try_from_any![error for: NonPositiveInteger+8, from: PositiveInteger+8,16,32,64,128];
112try_from_any![error for: NonPositiveInteger+16, from: PositiveInteger+8,16,32,64,128];
113try_from_any![error for: NonPositiveInteger+32, from: PositiveInteger+8,16,32,64,128];
114try_from_any![error for: NonPositiveInteger+64, from: PositiveInteger+8,16,32,64,128];
115try_from_any![error for: NonPositiveInteger+128, from: PositiveInteger+8,16,32,64,128];
116
117try_from_any![error for: NonPositiveInteger+8, from: Prime+8,16,32,64,128];
119try_from_any![error for: NonPositiveInteger+16, from: Prime+8,16,32,64,128];
120try_from_any![error for: NonPositiveInteger+32, from: Prime+8,16,32,64,128];
121try_from_any![error for: NonPositiveInteger+64, from: Prime+8,16,32,64,128];
122try_from_any![error for: NonPositiveInteger+128, from: Prime+8,16,32,64,128];
123
124try_for_primitive![neg for: i+8, from: NonPositiveInteger+8,16,32,64,128];
127try_for_primitive![neg for: i+16, from: NonPositiveInteger+8,16,32,64,128];
128try_for_primitive![neg for: i+32, from: NonPositiveInteger+8,16,32,64,128];
129try_for_primitive![neg for: i+64, from: NonPositiveInteger+8,16,32,64,128];
130try_for_primitive![neg for: i+128, from: NonPositiveInteger+8,16,32,64,128];
131
132try_from_any![zero for: u+8, from: NonPositiveInteger+8,16,32,64,128];
134try_from_any![zero for: u+16, from: NonPositiveInteger+8,16,32,64,128];
135try_from_any![zero for: u+32, from: NonPositiveInteger+8,16,32,64,128];
136try_from_any![zero for: u+64, from: NonPositiveInteger+8,16,32,64,128];
137try_from_any![zero for: u+128, from: NonPositiveInteger+8,16,32,64,128];
138
139try_for_primitive![neg_non0 for: NonZeroI+8, from: NonPositiveInteger+8,16,32,64,128];
140try_for_primitive![neg_non0 for: NonZeroI+16, from: NonPositiveInteger+8,16,32,64,128];
141try_for_primitive![neg_non0 for: NonZeroI+32, from: NonPositiveInteger+8,16,32,64,128];
142try_for_primitive![neg_non0 for: NonZeroI+64, from: NonPositiveInteger+8,16,32,64,128];
143try_for_primitive![neg_non0 for: NonZeroI+128, from: NonPositiveInteger+8,16,32,64,128];
144
145try_from_any![error for: NonZeroU+8, from: NonPositiveInteger+8,16,32,64,128];
146try_from_any![error for: NonZeroU+16, from: NonPositiveInteger+8,16,32,64,128];
147try_from_any![error for: NonZeroU+32, from: NonPositiveInteger+8,16,32,64,128];
148try_from_any![error for: NonZeroU+64, from: NonPositiveInteger+8,16,32,64,128];
149try_from_any![error for: NonZeroU+128, from: NonPositiveInteger+8,16,32,64,128];