nsw_types/
conversion.rs

1use crate::*;
2
3/// The error type returned when a checked integral type conversion fails.
4#[derive(Debug, Copy, Clone, PartialEq, Eq)]
5pub struct TryFromIntError(pub(crate) ());
6
7impl From<lib::core::num::TryFromIntError> for TryFromIntError {
8    fn from(_: lib::core::num::TryFromIntError) -> TryFromIntError {
9        TryFromIntError(())
10    }
11}
12
13impl From<lib::core::convert::Infallible> for TryFromIntError {
14    fn from(_: lib::core::convert::Infallible) -> TryFromIntError {
15        TryFromIntError(())
16    }
17}
18
19impl Display for TryFromIntError {
20    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
21        write!(f, "out of range integral type conversion attempted")
22    }
23}
24
25#[cfg(feature = "std")]
26impl std::error::Error for TryFromIntError {}
27
28// Only implement if $from can be converted into $name lossless
29macro_rules! implement_from {
30    {[$($name:ident),*], [$($from:ident),*] } => {$(implement_from!($name, $from);)*};
31    {$name:ident, [$($from:ident),*] } => {$(implement_from!($name, $from);)*};
32    {[$($name:ident),*], $from:ident } => {$(implement_from!($name, $from);)*};
33    {$name:ident, $from:ty} => {
34        impl From<$from> for $name {
35            fn from(x: $from) -> $name {
36                $name(x.into())
37            }
38        }
39    };
40}
41
42macro_rules! implement_try_from {
43    {[$($name:ident),*], [$($from:ident),*] } => {$(implement_try_from!($name, $from);)*};
44    {$name:ident, [$($from:ident),*] } => {$(implement_try_from!($name, $from);)*};
45    {[$($name:ident),*], $from:ident } => {$(implement_try_from!($name, $from);)*};
46    {$name:ident, $from:ty} => {
47        impl TryFrom<$from> for $name {
48            type Error = TryFromIntError;
49
50            fn try_from(x: $from) -> Result<$name, Self::Error> {
51                // First get the value into the correct type
52                let value = x.try_into()?;
53
54                if value <= $name::MAX.into() && value >= $name::MIN.into() {
55                    Ok($name(value))
56                } else {
57                    Err(TryFromIntError(()))
58                }
59            }
60        }
61    };
62}
63
64// Only implement if $type can be converted from $name lossless
65macro_rules! implement_into {
66    {[$($name:ident),*], $from:ident } => {$(implement_into!($name, $from);)*};
67    {$name:ident, $into:ident} => {
68        impl From<$name> for $into {
69            fn from(x: $name) -> $into {
70                $into::from(x.0)
71            }
72        }
73    };
74}
75
76macro_rules! implement_try_into {
77    {[$($name:ident),*], $from:ident } => {$(implement_try_into!($name, $from);)*};
78    {$name:ident, $into:ident} => {
79
80        impl TryFrom<$name> for $into {
81            type Error = TryFromIntError;
82
83            fn try_from(x: $name) -> Result<$into, Self::Error> {
84                Ok($into::try_from(x.0)?)
85            }
86        }
87    };
88}
89
90// Implement From for all unsigned integers
91
92implement_try_from!([u1, u2, u3, u4, u5, u6, u7], u8);
93implement_from!([u9, u10, u11, u12, u13, u14, u15], u8);
94implement_from!([u17, u18, u19, u20, u21, u22, u23, u24], u8);
95implement_from!([u25, u26, u27, u28, u29, u30, u31], u8);
96implement_from!([u33, u34, u35, u36, u37, u38, u39, u40], u8);
97implement_from!([u41, u42, u43, u44, u45, u46, u47, u48], u8);
98implement_from!([u49, u50, u51, u52, u53, u54, u55, u56], u8);
99implement_from!([u57, u58, u59, u60, u61, u62, u63], u8);
100
101implement_into!([u1, u2, u3, u4, u5, u6, u7], u8);
102implement_try_into!([u9, u10, u11, u12, u13, u14, u15], u8);
103implement_try_into!([u17, u18, u19, u20, u21, u22, u23, u24], u8);
104implement_try_into!([u25, u26, u27, u28, u29, u30, u31], u8);
105implement_try_into!([u33, u34, u35, u36, u37, u38, u39, u40], u8);
106implement_try_into!([u41, u42, u43, u44, u45, u46, u47, u48], u8);
107implement_try_into!([u49, u50, u51, u52, u53, u54, u55, u56], u8);
108implement_try_into!([u57, u58, u59, u60, u61, u62, u63], u8);
109
110implement_try_from!([u1, u2, u3, u4, u5, u6, u7], u16);
111implement_try_from!([u9, u10, u11, u12, u13, u14, u15], u16);
112implement_from!([u17, u18, u19, u20, u21, u22, u23, u24], u16);
113implement_from!([u25, u26, u27, u28, u29, u30, u31], u16);
114implement_from!([u33, u34, u35, u36, u37, u38, u39, u40], u16);
115implement_from!([u41, u42, u43, u44, u45, u46, u47, u48], u16);
116implement_from!([u49, u50, u51, u52, u53, u54, u55, u56], u16);
117implement_from!([u57, u58, u59, u60, u61, u62, u63], u16);
118
119implement_into!([u1, u2, u3, u4, u5, u6, u7], u16);
120implement_into!([u9, u10, u11, u12, u13, u14, u15], u16);
121implement_try_into!([u17, u18, u19, u20, u21, u22, u23, u24], u16);
122implement_try_into!([u25, u26, u27, u28, u29, u30, u31], u16);
123implement_try_into!([u33, u34, u35, u36, u37, u38, u39, u40], u16);
124implement_try_into!([u41, u42, u43, u44, u45, u46, u47, u48], u16);
125implement_try_into!([u49, u50, u51, u52, u53, u54, u55, u56], u16);
126implement_try_into!([u57, u58, u59, u60, u61, u62, u63], u16);
127
128implement_try_from!([u1, u2, u3, u4, u5, u6, u7], u32);
129implement_try_from!([u9, u10, u11, u12, u13, u14, u15], u32);
130implement_try_from!([u17, u18, u19, u20, u21, u22, u23, u24], u32);
131implement_try_from!([u25, u26, u27, u28, u29, u30, u31], u32);
132implement_from!([u33, u34, u35, u36, u37, u38, u39, u40], u32);
133implement_from!([u41, u42, u43, u44, u45, u46, u47, u48], u32);
134implement_from!([u49, u50, u51, u52, u53, u54, u55, u56], u32);
135implement_from!([u57, u58, u59, u60, u61, u62, u63], u32);
136
137implement_into!([u1, u2, u3, u4, u5, u6, u7], u32);
138implement_into!([u9, u10, u11, u12, u13, u14, u15], u32);
139implement_into!([u17, u18, u19, u20, u21, u22, u23, u24], u32);
140implement_into!([u25, u26, u27, u28, u29, u30, u31], u32);
141implement_try_into!([u33, u34, u35, u36, u37, u38, u39, u40], u32);
142implement_try_into!([u41, u42, u43, u44, u45, u46, u47, u48], u32);
143implement_try_into!([u49, u50, u51, u52, u53, u54, u55, u56], u32);
144implement_try_into!([u57, u58, u59, u60, u61, u62, u63], u32);
145
146implement_try_from!([u1, u2, u3, u4, u5, u6, u7], u64);
147implement_try_from!([u9, u10, u11, u12, u13, u14, u15], u64);
148implement_try_from!([u17, u18, u19, u20, u21, u22, u23, u24], u64);
149implement_try_from!([u25, u26, u27, u28, u29, u30, u31], u64);
150implement_try_from!([u33, u34, u35, u36, u37, u38, u39, u40], u64);
151implement_try_from!([u41, u42, u43, u44, u45, u46, u47, u48], u64);
152implement_try_from!([u49, u50, u51, u52, u53, u54, u55, u56], u64);
153implement_try_from!([u57, u58, u59, u60, u61, u62, u63], u64);
154
155implement_into!([u1, u2, u3, u4, u5, u6, u7], u64);
156implement_into!([u9, u10, u11, u12, u13, u14, u15], u64);
157implement_into!([u17, u18, u19, u20, u21, u22, u23, u24], u64);
158implement_into!([u25, u26, u27, u28, u29, u30, u31], u64);
159implement_into!([u33, u34, u35, u36, u37, u38, u39, u40], u64);
160implement_into!([u41, u42, u43, u44, u45, u46, u47, u48], u64);
161implement_into!([u49, u50, u51, u52, u53, u54, u55, u56], u64);
162implement_into!([u57, u58, u59, u60, u61, u62, u63], u64);
163
164implement_into!([u1, u2, u3, u4, u5, u6, u7], usize);
165implement_into!([u9, u10, u11, u12, u13, u14, u15], usize);
166
167implement_try_into!([u17, u18, u19, u20, u21, u22, u23, u24], usize);
168implement_try_into!([u25, u26, u27, u28, u29, u30, u31], usize);
169implement_try_into!([u33, u34, u35, u36, u37, u38, u39, u40], usize);
170implement_try_into!([u41, u42, u43, u44, u45, u46, u47, u48], usize);
171implement_try_into!([u49, u50, u51, u52, u53, u54, u55, u56], usize);
172implement_try_into!([u57, u58, u59, u60, u61, u62, u63], usize);
173
174implement_try_from!(
175    u1,
176    [
177        u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
178        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
179        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
180        u60, u61, u62, u63, usize
181    ]
182);
183
184implement_from!(u2, [u1]);
185implement_try_from!(
186    u2,
187    [
188        u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23,
189        u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42,
190        u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60,
191        u61, u62, u63, usize
192    ]
193);
194
195implement_from!(u3, [u2, u1]);
196implement_try_from!(
197    u3,
198    [
199        u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24,
200        u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43,
201        u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61,
202        u62, u63, usize
203    ]
204);
205
206implement_from!(u4, [u1, u2, u3]);
207implement_try_from!(
208    u4,
209    [
210        u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25,
211        u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44,
212        u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62,
213        u63, usize
214    ]
215);
216
217implement_from!(u5, [u1, u2, u3, u4]);
218implement_try_from!(
219    u5,
220    [
221        u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26,
222        u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45,
223        u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63,
224        usize
225    ]
226);
227
228implement_from!(u6, [u1, u2, u3, u4, u5]);
229implement_try_from!(
230    u6,
231    [
232        u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26,
233        u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45,
234        u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63,
235        usize
236    ]
237);
238
239implement_from!(u7, [u1, u2, u3, u4, u5, u6]);
240implement_try_from!(
241    u7,
242    [
243        u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27,
244        u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46,
245        u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
246    ]
247);
248
249implement_from!(u9, [u1, u2, u3, u4, u5, u6, u7]);
250implement_try_from!(
251    u9,
252    [
253        u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28,
254        u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47,
255        u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
256    ]
257);
258
259implement_from!(u10, [u1, u2, u3, u4, u5, u6, u7, u9]);
260implement_try_from!(
261    u10,
262    [
263        u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29,
264        u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48,
265        u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
266    ]
267);
268
269implement_from!(u11, [u1, u2, u3, u4, u5, u6, u7, u9, u10]);
270implement_try_from!(
271    u11,
272    [
273        u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30,
274        u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49,
275        u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
276    ]
277);
278
279implement_from!(u12, [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11]);
280implement_try_from!(
281    u12,
282    [
283        u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31,
284        u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50,
285        u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
286    ]
287);
288
289implement_from!(u13, [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12]);
290implement_try_from!(
291    u13,
292    [
293        u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33,
294        u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51,
295        u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
296    ]
297);
298
299implement_from!(u14, [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13]);
300implement_try_from!(
301    u14,
302    [
303        u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34,
304        u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52,
305        u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
306    ]
307);
308
309implement_from!(
310    u15,
311    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14]
312);
313implement_try_from!(
314    u15,
315    [
316        u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35,
317        u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53,
318        u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
319    ]
320);
321
322implement_from!(
323    u17,
324    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15]
325);
326implement_try_from!(
327    u17,
328    [
329        u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36,
330        u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54,
331        u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
332    ]
333);
334
335implement_from!(
336    u18,
337    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17]
338);
339implement_try_from!(
340    u18,
341    [
342        u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37,
343        u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55,
344        u56, u57, u58, u59, u60, u61, u62, u63, usize
345    ]
346);
347
348implement_from!(
349    u19,
350    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18]
351);
352implement_try_from!(
353    u19,
354    [
355        u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38,
356        u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56,
357        u57, u58, u59, u60, u61, u62, u63, usize
358    ]
359);
360
361implement_from!(
362    u20,
363    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19]
364);
365implement_try_from!(
366    u20,
367    [
368        u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39,
369        u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57,
370        u58, u59, u60, u61, u62, u63, usize
371    ]
372);
373
374implement_from!(
375    u21,
376    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20]
377);
378implement_try_from!(
379    u21,
380    [
381        u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40,
382        u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58,
383        u59, u60, u61, u62, u63, usize
384    ]
385);
386
387implement_from!(
388    u22,
389    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21]
390);
391implement_try_from!(
392    u22,
393    [
394        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
395        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
396        u60, u61, u62, u63, usize
397    ]
398);
399
400implement_from!(
401    u23,
402    [u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22]
403);
404implement_try_from!(
405    u23,
406    [
407        u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42,
408        u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60,
409        u61, u62, u63, usize
410    ]
411);
412
413implement_from!(
414    u24,
415    [
416        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
417        u23
418    ]
419);
420implement_try_from!(
421    u24,
422    [
423        u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43,
424        u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61,
425        u62, u63, usize
426    ]
427);
428
429implement_from!(
430    u25,
431    [
432        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
433        u23, u24
434    ]
435);
436implement_try_from!(
437    u25,
438    [
439        u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44,
440        u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62,
441        u63, usize
442    ]
443);
444
445implement_from!(
446    u26,
447    [
448        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
449        u23, u24, u25
450    ]
451);
452implement_try_from!(
453    u26,
454    [
455        u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45,
456        u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63,
457        usize
458    ]
459);
460
461implement_from!(
462    u27,
463    [
464        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
465        u23, u24, u25, u26
466    ]
467);
468implement_try_from!(
469    u27,
470    [
471        u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46,
472        u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
473    ]
474);
475
476implement_from!(
477    u28,
478    [
479        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
480        u23, u24, u25, u26, u27
481    ]
482);
483implement_try_from!(
484    u28,
485    [
486        u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47,
487        u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
488    ]
489);
490
491implement_from!(
492    u29,
493    [
494        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
495        u23, u24, u25, u26, u27, u28
496    ]
497);
498implement_try_from!(
499    u29,
500    [
501        u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48,
502        u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
503    ]
504);
505
506implement_from!(
507    u30,
508    [
509        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
510        u23, u24, u25, u26, u27, u28, u29
511    ]
512);
513implement_try_from!(
514    u30,
515    [
516        u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49,
517        u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
518    ]
519);
520
521implement_from!(
522    u31,
523    [
524        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
525        u23, u24, u25, u26, u27, u28, u29, u30
526    ]
527);
528implement_try_from!(
529    u31,
530    [
531        u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50,
532        u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
533    ]
534);
535
536implement_from!(
537    u33,
538    [
539        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
540        u23, u24, u25, u26, u27, u28, u29, u30, u31
541    ]
542);
543implement_try_from!(
544    u33,
545    [
546        u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51,
547        u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
548    ]
549);
550
551implement_from!(
552    u34,
553    [
554        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
555        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33
556    ]
557);
558implement_try_from!(
559    u34,
560    [
561        u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52,
562        u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
563    ]
564);
565
566implement_from!(
567    u35,
568    [
569        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
570        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34
571    ]
572);
573implement_try_from!(
574    u35,
575    [
576        u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53,
577        u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
578    ]
579);
580
581implement_from!(
582    u36,
583    [
584        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
585        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35
586    ]
587);
588implement_try_from!(
589    u36,
590    [
591        u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54,
592        u55, u56, u57, u58, u59, u60, u61, u62, u63, usize
593    ]
594);
595
596implement_from!(
597    u37,
598    [
599        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
600        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36
601    ]
602);
603implement_try_from!(
604    u37,
605    [
606        u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55,
607        u56, u57, u58, u59, u60, u61, u62, u63, usize
608    ]
609);
610
611implement_from!(
612    u38,
613    [
614        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
615        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37
616    ]
617);
618implement_try_from!(
619    u38,
620    [
621        u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56,
622        u57, u58, u59, u60, u61, u62, u63, usize
623    ]
624);
625
626implement_from!(
627    u39,
628    [
629        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
630        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38
631    ]
632);
633implement_try_from!(
634    u39,
635    [
636        u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57,
637        u58, u59, u60, u61, u62, u63, usize
638    ]
639);
640
641implement_from!(
642    u40,
643    [
644        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
645        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39
646    ]
647);
648implement_try_from!(
649    u40,
650    [
651        u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58,
652        u59, u60, u61, u62, u63, usize
653    ]
654);
655
656implement_from!(
657    u41,
658    [
659        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
660        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40
661    ]
662);
663implement_try_from!(
664    u41,
665    [
666        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
667        u60, u61, u62, u63, usize
668    ]
669);
670
671implement_from!(
672    u42,
673    [
674        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
675        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41
676    ]
677);
678implement_try_from!(
679    u42,
680    [
681        u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60,
682        u61, u62, u63, usize
683    ]
684);
685
686implement_from!(
687    u43,
688    [
689        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
690        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
691        u42
692    ]
693);
694implement_try_from!(
695    u43,
696    [
697        u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61,
698        u62, u63, usize
699    ]
700);
701
702implement_from!(
703    u44,
704    [
705        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
706        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
707        u42, u43
708    ]
709);
710implement_try_from!(
711    u44,
712    [
713        u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62,
714        u63, usize
715    ]
716);
717
718implement_from!(
719    u45,
720    [
721        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
722        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
723        u42, u43, u44
724    ]
725);
726implement_try_from!(
727    u45,
728    [
729        u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63,
730        usize
731    ]
732);
733
734implement_from!(
735    u46,
736    [
737        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
738        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
739        u42, u43, u44, u45
740    ]
741);
742implement_try_from!(
743    u46,
744    [u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
745);
746
747implement_from!(
748    u47,
749    [
750        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
751        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
752        u42, u43, u44, u45, u46
753    ]
754);
755implement_try_from!(
756    u47,
757    [u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
758);
759
760implement_from!(
761    u48,
762    [
763        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
764        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
765        u42, u43, u44, u45, u46, u47
766    ]
767);
768implement_try_from!(
769    u48,
770    [u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
771);
772
773implement_from!(
774    u49,
775    [
776        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
777        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
778        u42, u43, u44, u45, u46, u47, u48
779    ]
780);
781implement_try_from!(
782    u49,
783    [u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
784);
785
786implement_from!(
787    u50,
788    [
789        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
790        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
791        u42, u43, u44, u45, u46, u47, u48, u49
792    ]
793);
794implement_try_from!(
795    u50,
796    [u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
797);
798
799implement_from!(
800    u51,
801    [
802        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
803        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
804        u42, u43, u44, u45, u46, u47, u48, u49, u50
805    ]
806);
807implement_try_from!(
808    u51,
809    [u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
810);
811
812implement_from!(
813    u52,
814    [
815        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
816        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
817        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51
818    ]
819);
820implement_try_from!(
821    u52,
822    [u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
823);
824
825implement_from!(
826    u53,
827    [
828        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
829        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
830        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52
831    ]
832);
833implement_try_from!(
834    u53,
835    [u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]
836);
837
838implement_from!(
839    u54,
840    [
841        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
842        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
843        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53
844    ]
845);
846implement_try_from!(u54, [u55, u56, u57, u58, u59, u60, u61, u62, u63, usize]);
847
848implement_from!(
849    u55,
850    [
851        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
852        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
853        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54
854    ]
855);
856implement_try_from!(u55, [u56, u57, u58, u59, u60, u61, u62, u63, usize]);
857
858implement_from!(
859    u56,
860    [
861        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
862        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
863        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55
864    ]
865);
866implement_try_from!(u56, [u57, u58, u59, u60, u61, u62, u63, usize]);
867
868implement_from!(
869    u57,
870    [
871        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
872        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
873        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56
874    ]
875);
876implement_try_from!(u57, [u58, u59, u60, u61, u62, u63, usize]);
877
878implement_from!(
879    u58,
880    [
881        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
882        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
883        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57
884    ]
885);
886implement_try_from!(u58, [u59, u60, u61, u62, u63, usize]);
887
888implement_from!(
889    u59,
890    [
891        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
892        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
893        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58
894    ]
895);
896implement_try_from!(u59, [u60, u61, u62, u63, usize]);
897
898implement_from!(
899    u60,
900    [
901        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
902        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
903        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59
904    ]
905);
906implement_try_from!(u60, [u61, u62, u63, usize]);
907
908implement_from!(
909    u61,
910    [
911        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
912        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
913        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
914        u60
915    ]
916);
917implement_try_from!(u61, [u62, u63, usize]);
918
919implement_from!(
920    u62,
921    [
922        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
923        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
924        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
925        u60, u61
926    ]
927);
928implement_from!(
929    u63,
930    [
931        u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22,
932        u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41,
933        u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59,
934        u60, u61, u62
935    ]
936);
937
938// Implement from unsigned to signed
939implement_try_into!([u1, u2, u3, u4, u5, u6, u7], i8);
940implement_try_into!([u9, u10, u11, u12, u13, u14, u15], i8);
941implement_try_into!([u17, u18, u19, u20, u21, u22, u23], i8);
942implement_try_into!([u24, u25, u26, u27, u28, u29, u30], i8);
943implement_try_into!([u31, u33, u34, u35, u36, u37, u38], i8);
944implement_try_into!([u39, u40, u41, u42, u43, u44, u45], i8);
945implement_try_into!([u46, u47, u48, u49, u50, u51, u52], i8);
946implement_try_into!([u53, u54, u55, u56, u57, u58, u59], i8);
947implement_try_into!([u60, u61], i8);
948
949implement_into!([u1, u2, u3, u4, u5, u6, u7], i16);
950implement_try_into!([u9, u10, u11, u12, u13, u14, u15], i16);
951implement_try_into!([u17, u18, u19, u20, u21, u22, u23], i16);
952implement_try_into!([u24, u25, u26, u27, u28, u29, u30], i16);
953implement_try_into!([u31, u33, u34, u35, u36, u37, u38], i16);
954implement_try_into!([u39, u40, u41, u42, u43, u44, u45], i16);
955implement_try_into!([u46, u47, u48, u49, u50, u51, u52], i16);
956implement_try_into!([u53, u54, u55, u56, u57, u58, u59], i16);
957implement_try_into!([u60, u61], i16);
958
959implement_into!([u1, u2, u3, u4, u5, u6, u7], i32);
960implement_into!([u9, u10, u11, u12, u13, u14, u15], i32);
961implement_try_into!([u17, u18, u19, u20, u21, u22, u23], i32);
962implement_try_into!([u24, u25, u26, u27, u28, u29, u30], i32);
963implement_try_into!([u31, u33, u34, u35, u36, u37, u38], i32);
964implement_try_into!([u39, u40, u41, u42, u43, u44, u45], i32);
965implement_try_into!([u46, u47, u48, u49, u50, u51, u52], i32);
966implement_try_into!([u53, u54, u55, u56, u57, u58, u59], i32);
967implement_try_into!([u60, u61], i32);
968
969// Implement From for all signed integer
970
971implement_try_from!([i2, i3, i4, i5, i6, i7], i8);
972implement_from!([i9, i10, i11, i12, i13, i14, i15], i8);
973implement_from!([i17, i18, i19, i20, i21, i22, i23, i24], i8);
974implement_from!([i25, i26, i27, i28, i29, i30, i31], i8);
975implement_from!([i33, i34, i35, i36, i37, i38, i39, i40], i8);
976implement_from!([i41, i42, i43, i44, i45, i46, i47, i48], i8);
977implement_from!([i49, i50, i51, i52, i53, i54, i55, i56], i8);
978implement_from!([i57, i58, i59, i60, i61, i62, i63], i8);
979
980implement_into!([i2, i3, i4, i5, i6, i7], i8);
981implement_try_into!([i9, i10, i11, i12, i13, i14, i15], i8);
982implement_try_into!([i17, i18, i19, i20, i21, i22, i23, i24], i8);
983implement_try_into!([i25, i26, i27, i28, i29, i30, i31], i8);
984implement_try_into!([i33, i34, i35, i36, i37, i38, i39, i40], i8);
985implement_try_into!([i41, i42, i43, i44, i45, i46, i47, i48], i8);
986implement_try_into!([i49, i50, i51, i52, i53, i54, i55, i56], i8);
987implement_try_into!([i57, i58, i59, i60, i61, i62, i63], i8);
988
989implement_try_from!([i2, i3, i4, i5, i6, i7], i16);
990implement_try_from!([i9, i10, i11, i12, i13, i14, i15], i16);
991implement_from!([i17, i18, i19, i20, i21, i22, i23, i24], i16);
992implement_from!([i25, i26, i27, i28, i29, i30, i31], i16);
993implement_from!([i33, i34, i35, i36, i37, i38, i39, i40], i16);
994implement_from!([i41, i42, i43, i44, i45, i46, i47, i48], i16);
995implement_from!([i49, i50, i51, i52, i53, i54, i55, i56], i16);
996implement_from!([i57, i58, i59, i60, i61, i62, i63], i16);
997
998implement_into!([i2, i3, i4, i5, i6, i7], i16);
999implement_into!([i9, i10, i11, i12, i13, i14, i15], i16);
1000implement_try_into!([i17, i18, i19, i20, i21, i22, i23, i24], i16);
1001implement_try_into!([i25, i26, i27, i28, i29, i30, i31], i16);
1002implement_try_into!([i33, i34, i35, i36, i37, i38, i39, i40], i16);
1003implement_try_into!([i41, i42, i43, i44, i45, i46, i47, i48], i16);
1004implement_try_into!([i49, i50, i51, i52, i53, i54, i55, i56], i16);
1005implement_try_into!([i57, i58, i59, i60, i61, i62, i63], i16);
1006
1007implement_try_from!([i2, i3, i4, i5, i6, i7], i32);
1008implement_try_from!([i9, i10, i11, i12, i13, i14, i15], i32);
1009implement_try_from!([i17, i18, i19, i20, i21, i22, i23, i24], i32);
1010implement_try_from!([i25, i26, i27, i28, i29, i30, i31], i32);
1011implement_from!([i33, i34, i35, i36, i37, i38, i39, i40], i32);
1012implement_from!([i41, i42, i43, i44, i45, i46, i47, i48], i32);
1013implement_from!([i49, i50, i51, i52, i53, i54, i55, i56], i32);
1014implement_from!([i57, i58, i59, i60, i61, i62, i63], i32);
1015
1016implement_into!([i2, i3, i4, i5, i6, i7], i32);
1017implement_into!([i9, i10, i11, i12, i13, i14, i15], i32);
1018implement_into!([i17, i18, i19, i20, i21, i22, i23, i24], i32);
1019implement_into!([i25, i26, i27, i28, i29, i30, i31], i32);
1020implement_try_into!([i33, i34, i35, i36, i37, i38, i39, i40], i32);
1021implement_try_into!([i41, i42, i43, i44, i45, i46, i47, i48], i32);
1022implement_try_into!([i49, i50, i51, i52, i53, i54, i55, i56], i32);
1023implement_try_into!([i57, i58, i59, i60, i61, i62, i63], i32);
1024
1025implement_try_from!([i2, i3, i4, i5, i6, i7], i64);
1026implement_try_from!([i9, i10, i11, i12, i13, i14, i15], i64);
1027implement_try_from!([i17, i18, i19, i20, i21, i22, i23, i24], i64);
1028implement_try_from!([i25, i26, i27, i28, i29, i30, i31], i64);
1029implement_try_from!([i33, i34, i35, i36, i37, i38, i39, i40], i64);
1030implement_try_from!([i41, i42, i43, i44, i45, i46, i47, i48], i64);
1031implement_try_from!([i49, i50, i51, i52, i53, i54, i55, i56], i64);
1032implement_try_from!([i57, i58, i59, i60, i61, i62, i63], i64);
1033
1034implement_into!([i2, i3, i4, i5, i6, i7], i64);
1035implement_into!([i9, i10, i11, i12, i13, i14, i15], i64);
1036implement_into!([i17, i18, i19, i20, i21, i22, i23, i24], i64);
1037implement_into!([i25, i26, i27, i28, i29, i30, i31], i64);
1038implement_into!([i33, i34, i35, i36, i37, i38, i39, i40], i64);
1039implement_into!([i41, i42, i43, i44, i45, i46, i47, i48], i64);
1040implement_into!([i49, i50, i51, i52, i53, i54, i55, i56], i64);
1041implement_into!([i57, i58, i59, i60, i61, i62, i63], i64);
1042
1043implement_try_from!(
1044    i2,
1045    [
1046        i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23,
1047        i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42,
1048        i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60,
1049        i61, i62, i63
1050    ]
1051);
1052
1053implement_from!(i3, [i2]);
1054implement_try_from!(
1055    i3,
1056    [
1057        i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24,
1058        i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43,
1059        i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61,
1060        i62, i63
1061    ]
1062);
1063
1064implement_from!(i4, [i2, i3]);
1065implement_try_from!(
1066    i4,
1067    [
1068        i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25,
1069        i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44,
1070        i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62,
1071        i63
1072    ]
1073);
1074
1075implement_from!(i5, [i2, i3, i4]);
1076implement_try_from!(
1077    i5,
1078    [
1079        i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26,
1080        i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45,
1081        i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1082    ]
1083);
1084
1085implement_from!(i6, [i2, i3, i4, i5]);
1086implement_try_from!(
1087    i6,
1088    [
1089        i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26,
1090        i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45,
1091        i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1092    ]
1093);
1094
1095implement_from!(i7, [i2, i3, i4, i5, i6]);
1096implement_try_from!(
1097    i7,
1098    [
1099        i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27,
1100        i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46,
1101        i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1102    ]
1103);
1104
1105implement_from!(i9, [i2, i3, i4, i5, i6, i7]);
1106implement_try_from!(
1107    i9,
1108    [
1109        i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28,
1110        i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47,
1111        i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1112    ]
1113);
1114
1115implement_from!(i10, [i2, i3, i4, i5, i6, i7, i9]);
1116implement_try_from!(
1117    i10,
1118    [
1119        i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29,
1120        i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48,
1121        i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1122    ]
1123);
1124
1125implement_from!(i11, [i2, i3, i4, i5, i6, i7, i9, i10]);
1126implement_try_from!(
1127    i11,
1128    [
1129        i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30,
1130        i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49,
1131        i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1132    ]
1133);
1134
1135implement_from!(i12, [i2, i3, i4, i5, i6, i7, i9, i10, i11]);
1136implement_try_from!(
1137    i12,
1138    [
1139        i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31,
1140        i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50,
1141        i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1142    ]
1143);
1144
1145implement_from!(i13, [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12]);
1146implement_try_from!(
1147    i13,
1148    [
1149        i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33,
1150        i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51,
1151        i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1152    ]
1153);
1154
1155implement_from!(i14, [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13]);
1156implement_try_from!(
1157    i14,
1158    [
1159        i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34,
1160        i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52,
1161        i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1162    ]
1163);
1164
1165implement_from!(i15, [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14]);
1166implement_try_from!(
1167    i15,
1168    [
1169        i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35,
1170        i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53,
1171        i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1172    ]
1173);
1174
1175implement_from!(
1176    i17,
1177    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15]
1178);
1179implement_try_from!(
1180    i17,
1181    [
1182        i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36,
1183        i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54,
1184        i55, i56, i57, i58, i59, i60, i61, i62, i63
1185    ]
1186);
1187
1188implement_from!(
1189    i18,
1190    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17]
1191);
1192implement_try_from!(
1193    i18,
1194    [
1195        i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37,
1196        i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55,
1197        i56, i57, i58, i59, i60, i61, i62, i63
1198    ]
1199);
1200
1201implement_from!(
1202    i19,
1203    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18]
1204);
1205implement_try_from!(
1206    i19,
1207    [
1208        i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38,
1209        i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56,
1210        i57, i58, i59, i60, i61, i62, i63
1211    ]
1212);
1213
1214implement_from!(
1215    i20,
1216    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19]
1217);
1218implement_try_from!(
1219    i20,
1220    [
1221        i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39,
1222        i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57,
1223        i58, i59, i60, i61, i62, i63
1224    ]
1225);
1226
1227implement_from!(
1228    i21,
1229    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20]
1230);
1231implement_try_from!(
1232    i21,
1233    [
1234        i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40,
1235        i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58,
1236        i59, i60, i61, i62, i63
1237    ]
1238);
1239
1240implement_from!(
1241    i22,
1242    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21]
1243);
1244implement_try_from!(
1245    i22,
1246    [
1247        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1248        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59,
1249        i60, i61, i62, i63
1250    ]
1251);
1252
1253implement_from!(
1254    i23,
1255    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22]
1256);
1257implement_try_from!(
1258    i23,
1259    [
1260        i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42,
1261        i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60,
1262        i61, i62, i63
1263    ]
1264);
1265
1266implement_from!(
1267    i24,
1268    [i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23]
1269);
1270implement_try_from!(
1271    i24,
1272    [
1273        i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43,
1274        i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61,
1275        i62, i63
1276    ]
1277);
1278
1279implement_from!(
1280    i25,
1281    [
1282        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1283        i23, i24
1284    ]
1285);
1286implement_try_from!(
1287    i25,
1288    [
1289        i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44,
1290        i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62,
1291        i63
1292    ]
1293);
1294
1295implement_from!(
1296    i26,
1297    [
1298        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1299        i23, i24, i25
1300    ]
1301);
1302implement_try_from!(
1303    i26,
1304    [
1305        i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45,
1306        i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1307    ]
1308);
1309
1310implement_from!(
1311    i27,
1312    [
1313        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1314        i23, i24, i25, i26
1315    ]
1316);
1317implement_try_from!(
1318    i27,
1319    [
1320        i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46,
1321        i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1322    ]
1323);
1324
1325implement_from!(
1326    i28,
1327    [
1328        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1329        i23, i24, i25, i26, i27
1330    ]
1331);
1332implement_try_from!(
1333    i28,
1334    [
1335        i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47,
1336        i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1337    ]
1338);
1339
1340implement_from!(
1341    i29,
1342    [
1343        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1344        i23, i24, i25, i26, i27, i28
1345    ]
1346);
1347implement_try_from!(
1348    i29,
1349    [
1350        i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48,
1351        i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1352    ]
1353);
1354
1355implement_from!(
1356    i30,
1357    [
1358        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1359        i23, i24, i25, i26, i27, i28, i29
1360    ]
1361);
1362implement_try_from!(
1363    i30,
1364    [
1365        i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49,
1366        i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1367    ]
1368);
1369
1370implement_from!(
1371    i31,
1372    [
1373        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1374        i23, i24, i25, i26, i27, i28, i29, i30
1375    ]
1376);
1377implement_try_from!(
1378    i31,
1379    [
1380        i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50,
1381        i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1382    ]
1383);
1384
1385implement_from!(
1386    i33,
1387    [
1388        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1389        i23, i24, i25, i26, i27, i28, i29, i30, i31
1390    ]
1391);
1392implement_try_from!(
1393    i33,
1394    [
1395        i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51,
1396        i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1397    ]
1398);
1399
1400implement_from!(
1401    i34,
1402    [
1403        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1404        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33
1405    ]
1406);
1407implement_try_from!(
1408    i34,
1409    [
1410        i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52,
1411        i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1412    ]
1413);
1414
1415implement_from!(
1416    i35,
1417    [
1418        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1419        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34
1420    ]
1421);
1422implement_try_from!(
1423    i35,
1424    [
1425        i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53,
1426        i54, i55, i56, i57, i58, i59, i60, i61, i62, i63
1427    ]
1428);
1429
1430implement_from!(
1431    i36,
1432    [
1433        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1434        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35
1435    ]
1436);
1437implement_try_from!(
1438    i36,
1439    [
1440        i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54,
1441        i55, i56, i57, i58, i59, i60, i61, i62, i63
1442    ]
1443);
1444
1445implement_from!(
1446    i37,
1447    [
1448        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1449        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36
1450    ]
1451);
1452implement_try_from!(
1453    i37,
1454    [
1455        i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55,
1456        i56, i57, i58, i59, i60, i61, i62, i63
1457    ]
1458);
1459
1460implement_from!(
1461    i38,
1462    [
1463        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1464        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37
1465    ]
1466);
1467implement_try_from!(
1468    i38,
1469    [
1470        i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56,
1471        i57, i58, i59, i60, i61, i62, i63
1472    ]
1473);
1474
1475implement_from!(
1476    i39,
1477    [
1478        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1479        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38
1480    ]
1481);
1482implement_try_from!(
1483    i39,
1484    [
1485        i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57,
1486        i58, i59, i60, i61, i62, i63
1487    ]
1488);
1489
1490implement_from!(
1491    i40,
1492    [
1493        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1494        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39
1495    ]
1496);
1497implement_try_from!(
1498    i40,
1499    [
1500        i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58,
1501        i59, i60, i61, i62, i63
1502    ]
1503);
1504
1505implement_from!(
1506    i41,
1507    [
1508        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1509        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40
1510    ]
1511);
1512implement_try_from!(
1513    i41,
1514    [
1515        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59,
1516        i60, i61, i62, i63
1517    ]
1518);
1519
1520implement_from!(
1521    i42,
1522    [
1523        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1524        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41
1525    ]
1526);
1527implement_try_from!(
1528    i42,
1529    [
1530        i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60,
1531        i61, i62, i63
1532    ]
1533);
1534
1535implement_from!(
1536    i43,
1537    [
1538        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1539        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1540        i42
1541    ]
1542);
1543implement_try_from!(
1544    i43,
1545    [
1546        i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61,
1547        i62, i63
1548    ]
1549);
1550
1551implement_from!(
1552    i44,
1553    [
1554        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1555        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1556        i42, i43
1557    ]
1558);
1559implement_try_from!(
1560    i44,
1561    [
1562        i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62,
1563        i63
1564    ]
1565);
1566
1567implement_from!(
1568    i45,
1569    [
1570        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1571        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1572        i42, i43, i44
1573    ]
1574);
1575implement_try_from!(
1576    i45,
1577    [i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1578);
1579
1580implement_from!(
1581    i46,
1582    [
1583        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1584        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1585        i42, i43, i44, i45
1586    ]
1587);
1588implement_try_from!(
1589    i46,
1590    [i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1591);
1592
1593implement_from!(
1594    i47,
1595    [
1596        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1597        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1598        i42, i43, i44, i45, i46
1599    ]
1600);
1601implement_try_from!(
1602    i47,
1603    [i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1604);
1605
1606implement_from!(
1607    i48,
1608    [
1609        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1610        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1611        i42, i43, i44, i45, i46, i47
1612    ]
1613);
1614implement_try_from!(
1615    i48,
1616    [i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1617);
1618
1619implement_from!(
1620    i49,
1621    [
1622        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1623        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1624        i42, i43, i44, i45, i46, i47, i48
1625    ]
1626);
1627implement_try_from!(
1628    i49,
1629    [i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1630);
1631
1632implement_from!(
1633    i50,
1634    [
1635        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1636        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1637        i42, i43, i44, i45, i46, i47, i48, i49
1638    ]
1639);
1640implement_try_from!(
1641    i50,
1642    [i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1643);
1644
1645implement_from!(
1646    i51,
1647    [
1648        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1649        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1650        i42, i43, i44, i45, i46, i47, i48, i49, i50
1651    ]
1652);
1653implement_try_from!(
1654    i51,
1655    [i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]
1656);
1657
1658implement_from!(
1659    i52,
1660    [
1661        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1662        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1663        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51
1664    ]
1665);
1666implement_try_from!(i52, [i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]);
1667
1668implement_from!(
1669    i53,
1670    [
1671        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1672        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1673        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52
1674    ]
1675);
1676implement_try_from!(i53, [i54, i55, i56, i57, i58, i59, i60, i61, i62, i63]);
1677
1678implement_from!(
1679    i54,
1680    [
1681        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1682        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1683        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53
1684    ]
1685);
1686implement_try_from!(i54, [i55, i56, i57, i58, i59, i60, i61, i62, i63]);
1687
1688implement_from!(
1689    i55,
1690    [
1691        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1692        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1693        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54
1694    ]
1695);
1696implement_try_from!(i55, [i56, i57, i58, i59, i60, i61, i62, i63]);
1697
1698implement_from!(
1699    i56,
1700    [
1701        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1702        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1703        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55
1704    ]
1705);
1706implement_try_from!(i56, [i57, i58, i59, i60, i61, i62, i63]);
1707
1708implement_from!(
1709    i57,
1710    [
1711        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1712        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1713        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56
1714    ]
1715);
1716implement_try_from!(i57, [i58, i59, i60, i61, i62, i63]);
1717
1718implement_from!(
1719    i58,
1720    [
1721        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1722        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1723        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57
1724    ]
1725);
1726implement_try_from!(i58, [i59, i60, i61, i62, i63]);
1727
1728implement_from!(
1729    i59,
1730    [
1731        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1732        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1733        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58
1734    ]
1735);
1736implement_try_from!(i59, [i60, i61, i62, i63]);
1737
1738implement_from!(
1739    i60,
1740    [
1741        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1742        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1743        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59
1744    ]
1745);
1746implement_try_from!(i60, [i61, i62, i63]);
1747
1748implement_from!(
1749    i61,
1750    [
1751        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1752        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1753        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59,
1754        i60
1755    ]
1756);
1757implement_try_from!(i61, [i62, i63]);
1758
1759implement_from!(
1760    i62,
1761    [
1762        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1763        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1764        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59,
1765        i60, i61
1766    ]
1767);
1768implement_from!(
1769    i63,
1770    [
1771        i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22,
1772        i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41,
1773        i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59,
1774        i60, i61, i62
1775    ]
1776);
1777
1778impl From<bool> for u1 {
1779    fn from(b: bool) -> Self {
1780        match b {
1781            true => u1(1),
1782            false => u1(0),
1783        }
1784    }
1785}
1786
1787impl From<u1> for bool {
1788    fn from(u1(x): u1) -> Self {
1789        match x {
1790            0 => false,
1791            1 => true,
1792            _ => unreachable!(),
1793        }
1794    }
1795}
1796
1797#[cfg(test)]
1798mod tests {
1799    use super::*;
1800
1801    #[test]
1802    fn test_infallible_conversion_unsigned() {
1803        assert_eq!(u16::from(u9(12)), 12u16);
1804        assert_eq!(u32::from(u9(12)), 12u32);
1805
1806        assert_eq!(u9(127), <u8 as Into<u9>>::into(127u8));
1807
1808        assert_eq!(u7::from(u6(65)), u7(65));
1809    }
1810
1811    #[test]
1812    fn test_infallible_conversion_signed() {
1813        assert_eq!(i16::from(i9(12)), 12i16);
1814        assert_eq!(i32::from(i9(12)), 12i32);
1815
1816        assert_eq!(i16::from(i9(-12)), -12i16);
1817        assert_eq!(i32::from(i9(-12)), -12i32);
1818
1819        assert_eq!(i9(127), 127i8.into());
1820
1821        assert_eq!(i7::from(i6(65)), i7(65));
1822        assert_eq!(i7::from(i6(-65)), i7(-65));
1823    }
1824
1825    #[test]
1826    fn test_fallible_conversion_unsigned() {
1827        assert_eq!(u7::try_from(u9(12)), Ok(u7(12)));
1828        assert_eq!(u9::try_from(u10(12)), Ok(u9(12)));
1829
1830        assert_eq!(127u16.try_into(), Ok(u9(127)));
1831
1832        assert_eq!(u5::try_from(u6(29)), Ok(u5(29)));
1833
1834        assert!(u16::try_from(u19(0x1_ffff)).is_err());
1835        assert!(u32::try_from(u39(0x001f_ffff_ffff)).is_err());
1836
1837        assert!(u6::try_from(u7(127)).is_err());
1838
1839        assert_eq!(u2::try_from(1usize), Ok(u2(1)));
1840        assert!(u2::try_from(4usize).is_err());
1841        assert_eq!(u17(1).try_into(), Ok(1usize));
1842
1843        // Make sure that nsw-types types behave the same as standard types with regards to usize
1844        // conversion.
1845        assert_eq!(
1846            usize::try_from(0x1_FFFF_FFFFu64).is_err(),
1847            usize::try_from(u33::MAX).is_err()
1848        );
1849    }
1850
1851    #[test]
1852    fn test_fallible_conversion_signed() {
1853        assert_eq!(i7::try_from(i9(12)), Ok(i7(12)));
1854        assert_eq!(i9::try_from(i10(12)), Ok(i9(12)));
1855
1856        assert_eq!(i7::try_from(i9(-12)), Ok(i7(-12)));
1857        assert_eq!(i9::try_from(i10(-12)), Ok(i9(-12)));
1858
1859        assert_eq!(127i16.try_into(), Ok(i9(127)));
1860
1861        assert_eq!(i7::try_from(i9(63)), Ok(i7(63)));
1862        assert_eq!(i7::try_from(i9(-63)), Ok(i7(-63)));
1863
1864        assert!(i16::try_from(i19(0xffff)).is_err());
1865        assert!(i32::try_from(i39(0xffff_ffff)).is_err());
1866
1867        assert!(i16::try_from(i19(-0xffff)).is_err());
1868        assert!(i32::try_from(i39(-0xffff_ffff)).is_err());
1869
1870        assert!(i6::try_from(i7(64)).is_err());
1871        assert!(i6::try_from(i7(-64)).is_err());
1872    }
1873
1874    #[test]
1875    #[cfg(feature = "std")]
1876    fn error_trait() {
1877        assert_eq!(
1878            (&TryFromIntError(()) as &dyn std::error::Error).to_string(),
1879            "out of range integral type conversion attempted"
1880        );
1881    }
1882}