const_arithmetic/
hex.rs

1//! Implements the base hexadecimal type
2
3use super::binary::*;
4
5/// This denotes the number 0
6#[derive(Clone, Copy, Debug)]
7pub struct _0;
8
9/// This denotes the number 1
10#[derive(Clone, Copy, Debug)]
11pub struct _1;
12
13/// This denotes the number 2
14#[derive(Clone, Copy, Debug)]
15pub struct _2;
16
17/// This denotes the number 3
18#[derive(Clone, Copy, Debug)]
19pub struct _3;
20
21/// This denotes the number 4
22#[derive(Clone, Copy, Debug)]
23pub struct _4;
24
25/// This denotes the number 5
26#[derive(Clone, Copy, Debug)]
27pub struct _5;
28
29/// This denotes the number 6
30#[derive(Clone, Copy, Debug)]
31pub struct _6;
32
33/// This denotes the number 7
34#[derive(Clone, Copy, Debug)]
35pub struct _7;
36
37/// This denotes the number 8
38#[derive(Clone, Copy, Debug)]
39pub struct _8;
40
41/// This denotes the number 9
42#[derive(Clone, Copy, Debug)]
43pub struct _9;
44
45/// This denotes the number 10
46#[derive(Clone, Copy, Debug)]
47pub struct _A;
48
49/// This denotes the number 11
50#[derive(Clone, Copy, Debug)]
51pub struct _B;
52
53/// This denotes the number 12
54#[derive(Clone, Copy, Debug)]
55pub struct _C;
56
57/// This denotes the number 13
58#[derive(Clone, Copy, Debug)]
59pub struct _D;
60
61/// This denotes the number 14
62#[derive(Clone, Copy, Debug)]
63pub struct _E;
64
65/// This denotes the number 15
66#[derive(Clone, Copy, Debug)]
67pub struct _F;
68
69/// This denotes one single hexadecimal - half a byte
70pub trait Hex: Copy {
71    const NUMBER: u32;
72}
73impl Hex for _0 { const NUMBER: u32 = 0; }
74impl Hex for _1 { const NUMBER: u32 = 1; }
75impl Hex for _2 { const NUMBER: u32 = 2; }
76impl Hex for _3 { const NUMBER: u32 = 3; }
77impl Hex for _4 { const NUMBER: u32 = 4; }
78impl Hex for _5 { const NUMBER: u32 = 5; }
79impl Hex for _6 { const NUMBER: u32 = 6; }
80impl Hex for _7 { const NUMBER: u32 = 7; }
81impl Hex for _8 { const NUMBER: u32 = 8; }
82impl Hex for _9 { const NUMBER: u32 = 9; }
83impl Hex for _A { const NUMBER: u32 = 10; }
84impl Hex for _B { const NUMBER: u32 = 11; }
85impl Hex for _C { const NUMBER: u32 = 12; }
86impl Hex for _D { const NUMBER: u32 = 13; }
87impl Hex for _E { const NUMBER: u32 = 14; }
88impl Hex for _F { const NUMBER: u32 = 15; }
89
90#[doc(hidden)]
91pub(crate) trait NonZeroHex: Hex {}
92impl NonZeroHex for _1 {}
93impl NonZeroHex for _2 {}
94impl NonZeroHex for _3 {}
95impl NonZeroHex for _4 {}
96impl NonZeroHex for _5 {}
97impl NonZeroHex for _6 {}
98impl NonZeroHex for _7 {}
99impl NonZeroHex for _8 {}
100impl NonZeroHex for _9 {}
101impl NonZeroHex for _A {}
102impl NonZeroHex for _B {}
103impl NonZeroHex for _C {}
104impl NonZeroHex for _D {}
105impl NonZeroHex for _E {}
106impl NonZeroHex for _F {}
107
108/// This is an internal implementation of addition of 2 number
109/// 
110/// Example
111/// ```
112/// use const_arithmetic::*;
113/// let a = _F;
114/// let b = _6;
115/// let result = _5;
116/// let overflow = _1;
117/// 
118/// // This verifies 15 + 6 = 21
119/// fn hex_add<H1, H2, B, C>(_h1: H1, _h2: H2,  _b: B, _c: C) where
120/// H1: Hex,
121/// H2: Hex,
122/// B: Hex,
123/// C: Hex,
124/// H1: HexAdd<H2, Output = B, Carry = C>
125/// {}
126/// 
127/// hex_add(a, b, result, overflow);
128/// ```
129pub trait HexAdd<H: Hex> { type Output: Hex; type Carry: Hex; }
130impl HexAdd<_0> for _0 { type Output = _0; type Carry = _0; }
131impl HexAdd<_0> for _1 { type Output = _1; type Carry = _0; }
132impl HexAdd<_0> for _2 { type Output = _2; type Carry = _0; }
133impl HexAdd<_0> for _3 { type Output = _3; type Carry = _0; }
134impl HexAdd<_0> for _4 { type Output = _4; type Carry = _0; }
135impl HexAdd<_0> for _5 { type Output = _5; type Carry = _0; }
136impl HexAdd<_0> for _6 { type Output = _6; type Carry = _0; }
137impl HexAdd<_0> for _7 { type Output = _7; type Carry = _0; }
138impl HexAdd<_0> for _8 { type Output = _8; type Carry = _0; }
139impl HexAdd<_0> for _9 { type Output = _9; type Carry = _0; }
140impl HexAdd<_0> for _A { type Output = _A; type Carry = _0; }
141impl HexAdd<_0> for _B { type Output = _B; type Carry = _0; }
142impl HexAdd<_0> for _C { type Output = _C; type Carry = _0; }
143impl HexAdd<_0> for _D { type Output = _D; type Carry = _0; }
144impl HexAdd<_0> for _E { type Output = _E; type Carry = _0; }
145impl HexAdd<_0> for _F { type Output = _F; type Carry = _0; }
146impl HexAdd<_1> for _0 { type Output = _1; type Carry = _0; }
147impl HexAdd<_1> for _1 { type Output = _2; type Carry = _0; }
148impl HexAdd<_1> for _2 { type Output = _3; type Carry = _0; }
149impl HexAdd<_1> for _3 { type Output = _4; type Carry = _0; }
150impl HexAdd<_1> for _4 { type Output = _5; type Carry = _0; }
151impl HexAdd<_1> for _5 { type Output = _6; type Carry = _0; }
152impl HexAdd<_1> for _6 { type Output = _7; type Carry = _0; }
153impl HexAdd<_1> for _7 { type Output = _8; type Carry = _0; }
154impl HexAdd<_1> for _8 { type Output = _9; type Carry = _0; }
155impl HexAdd<_1> for _9 { type Output = _A; type Carry = _0; }
156impl HexAdd<_1> for _A { type Output = _B; type Carry = _0; }
157impl HexAdd<_1> for _B { type Output = _C; type Carry = _0; }
158impl HexAdd<_1> for _C { type Output = _D; type Carry = _0; }
159impl HexAdd<_1> for _D { type Output = _E; type Carry = _0; }
160impl HexAdd<_1> for _E { type Output = _F; type Carry = _0; }
161impl HexAdd<_1> for _F { type Output = _0; type Carry = _1; }
162impl HexAdd<_2> for _0 { type Output = _2; type Carry = _0; }
163impl HexAdd<_2> for _1 { type Output = _3; type Carry = _0; }
164impl HexAdd<_2> for _2 { type Output = _4; type Carry = _0; }
165impl HexAdd<_2> for _3 { type Output = _5; type Carry = _0; }
166impl HexAdd<_2> for _4 { type Output = _6; type Carry = _0; }
167impl HexAdd<_2> for _5 { type Output = _7; type Carry = _0; }
168impl HexAdd<_2> for _6 { type Output = _8; type Carry = _0; }
169impl HexAdd<_2> for _7 { type Output = _9; type Carry = _0; }
170impl HexAdd<_2> for _8 { type Output = _A; type Carry = _0; }
171impl HexAdd<_2> for _9 { type Output = _B; type Carry = _0; }
172impl HexAdd<_2> for _A { type Output = _C; type Carry = _0; }
173impl HexAdd<_2> for _B { type Output = _D; type Carry = _0; }
174impl HexAdd<_2> for _C { type Output = _E; type Carry = _0; }
175impl HexAdd<_2> for _D { type Output = _F; type Carry = _0; }
176impl HexAdd<_2> for _E { type Output = _0; type Carry = _1; }
177impl HexAdd<_2> for _F { type Output = _1; type Carry = _1; }
178impl HexAdd<_3> for _0 { type Output = _3; type Carry = _0; }
179impl HexAdd<_3> for _1 { type Output = _4; type Carry = _0; }
180impl HexAdd<_3> for _2 { type Output = _5; type Carry = _0; }
181impl HexAdd<_3> for _3 { type Output = _6; type Carry = _0; }
182impl HexAdd<_3> for _4 { type Output = _7; type Carry = _0; }
183impl HexAdd<_3> for _5 { type Output = _8; type Carry = _0; }
184impl HexAdd<_3> for _6 { type Output = _9; type Carry = _0; }
185impl HexAdd<_3> for _7 { type Output = _A; type Carry = _0; }
186impl HexAdd<_3> for _8 { type Output = _B; type Carry = _0; }
187impl HexAdd<_3> for _9 { type Output = _C; type Carry = _0; }
188impl HexAdd<_3> for _A { type Output = _D; type Carry = _0; }
189impl HexAdd<_3> for _B { type Output = _E; type Carry = _0; }
190impl HexAdd<_3> for _C { type Output = _F; type Carry = _0; }
191impl HexAdd<_3> for _D { type Output = _0; type Carry = _1; }
192impl HexAdd<_3> for _E { type Output = _1; type Carry = _1; }
193impl HexAdd<_3> for _F { type Output = _2; type Carry = _1; }
194impl HexAdd<_4> for _0 { type Output = _4; type Carry = _0; }
195impl HexAdd<_4> for _1 { type Output = _5; type Carry = _0; }
196impl HexAdd<_4> for _2 { type Output = _6; type Carry = _0; }
197impl HexAdd<_4> for _3 { type Output = _7; type Carry = _0; }
198impl HexAdd<_4> for _4 { type Output = _8; type Carry = _0; }
199impl HexAdd<_4> for _5 { type Output = _9; type Carry = _0; }
200impl HexAdd<_4> for _6 { type Output = _A; type Carry = _0; }
201impl HexAdd<_4> for _7 { type Output = _B; type Carry = _0; }
202impl HexAdd<_4> for _8 { type Output = _C; type Carry = _0; }
203impl HexAdd<_4> for _9 { type Output = _D; type Carry = _0; }
204impl HexAdd<_4> for _A { type Output = _E; type Carry = _0; }
205impl HexAdd<_4> for _B { type Output = _F; type Carry = _0; }
206impl HexAdd<_4> for _C { type Output = _0; type Carry = _1; }
207impl HexAdd<_4> for _D { type Output = _1; type Carry = _1; }
208impl HexAdd<_4> for _E { type Output = _2; type Carry = _1; }
209impl HexAdd<_4> for _F { type Output = _3; type Carry = _1; }
210impl HexAdd<_5> for _0 { type Output = _5; type Carry = _0; }
211impl HexAdd<_5> for _1 { type Output = _6; type Carry = _0; }
212impl HexAdd<_5> for _2 { type Output = _7; type Carry = _0; }
213impl HexAdd<_5> for _3 { type Output = _8; type Carry = _0; }
214impl HexAdd<_5> for _4 { type Output = _9; type Carry = _0; }
215impl HexAdd<_5> for _5 { type Output = _A; type Carry = _0; }
216impl HexAdd<_5> for _6 { type Output = _B; type Carry = _0; }
217impl HexAdd<_5> for _7 { type Output = _C; type Carry = _0; }
218impl HexAdd<_5> for _8 { type Output = _D; type Carry = _0; }
219impl HexAdd<_5> for _9 { type Output = _E; type Carry = _0; }
220impl HexAdd<_5> for _A { type Output = _F; type Carry = _0; }
221impl HexAdd<_5> for _B { type Output = _0; type Carry = _1; }
222impl HexAdd<_5> for _C { type Output = _1; type Carry = _1; }
223impl HexAdd<_5> for _D { type Output = _2; type Carry = _1; }
224impl HexAdd<_5> for _E { type Output = _3; type Carry = _1; }
225impl HexAdd<_5> for _F { type Output = _4; type Carry = _1; }
226impl HexAdd<_6> for _0 { type Output = _6; type Carry = _0; }
227impl HexAdd<_6> for _1 { type Output = _7; type Carry = _0; }
228impl HexAdd<_6> for _2 { type Output = _8; type Carry = _0; }
229impl HexAdd<_6> for _3 { type Output = _9; type Carry = _0; }
230impl HexAdd<_6> for _4 { type Output = _A; type Carry = _0; }
231impl HexAdd<_6> for _5 { type Output = _B; type Carry = _0; }
232impl HexAdd<_6> for _6 { type Output = _C; type Carry = _0; }
233impl HexAdd<_6> for _7 { type Output = _D; type Carry = _0; }
234impl HexAdd<_6> for _8 { type Output = _E; type Carry = _0; }
235impl HexAdd<_6> for _9 { type Output = _F; type Carry = _0; }
236impl HexAdd<_6> for _A { type Output = _0; type Carry = _1; }
237impl HexAdd<_6> for _B { type Output = _1; type Carry = _1; }
238impl HexAdd<_6> for _C { type Output = _2; type Carry = _1; }
239impl HexAdd<_6> for _D { type Output = _3; type Carry = _1; }
240impl HexAdd<_6> for _E { type Output = _4; type Carry = _1; }
241impl HexAdd<_6> for _F { type Output = _5; type Carry = _1; }
242impl HexAdd<_7> for _0 { type Output = _7; type Carry = _0; }
243impl HexAdd<_7> for _1 { type Output = _8; type Carry = _0; }
244impl HexAdd<_7> for _2 { type Output = _9; type Carry = _0; }
245impl HexAdd<_7> for _3 { type Output = _A; type Carry = _0; }
246impl HexAdd<_7> for _4 { type Output = _B; type Carry = _0; }
247impl HexAdd<_7> for _5 { type Output = _C; type Carry = _0; }
248impl HexAdd<_7> for _6 { type Output = _D; type Carry = _0; }
249impl HexAdd<_7> for _7 { type Output = _E; type Carry = _0; }
250impl HexAdd<_7> for _8 { type Output = _F; type Carry = _0; }
251impl HexAdd<_7> for _9 { type Output = _0; type Carry = _1; }
252impl HexAdd<_7> for _A { type Output = _1; type Carry = _1; }
253impl HexAdd<_7> for _B { type Output = _2; type Carry = _1; }
254impl HexAdd<_7> for _C { type Output = _3; type Carry = _1; }
255impl HexAdd<_7> for _D { type Output = _4; type Carry = _1; }
256impl HexAdd<_7> for _E { type Output = _5; type Carry = _1; }
257impl HexAdd<_7> for _F { type Output = _6; type Carry = _1; }
258impl HexAdd<_8> for _0 { type Output = _8; type Carry = _0; }
259impl HexAdd<_8> for _1 { type Output = _9; type Carry = _0; }
260impl HexAdd<_8> for _2 { type Output = _A; type Carry = _0; }
261impl HexAdd<_8> for _3 { type Output = _B; type Carry = _0; }
262impl HexAdd<_8> for _4 { type Output = _C; type Carry = _0; }
263impl HexAdd<_8> for _5 { type Output = _D; type Carry = _0; }
264impl HexAdd<_8> for _6 { type Output = _E; type Carry = _0; }
265impl HexAdd<_8> for _7 { type Output = _F; type Carry = _0; }
266impl HexAdd<_8> for _8 { type Output = _0; type Carry = _1; }
267impl HexAdd<_8> for _9 { type Output = _1; type Carry = _1; }
268impl HexAdd<_8> for _A { type Output = _2; type Carry = _1; }
269impl HexAdd<_8> for _B { type Output = _3; type Carry = _1; }
270impl HexAdd<_8> for _C { type Output = _4; type Carry = _1; }
271impl HexAdd<_8> for _D { type Output = _5; type Carry = _1; }
272impl HexAdd<_8> for _E { type Output = _6; type Carry = _1; }
273impl HexAdd<_8> for _F { type Output = _7; type Carry = _1; }
274impl HexAdd<_9> for _0 { type Output = _9; type Carry = _0; }
275impl HexAdd<_9> for _1 { type Output = _A; type Carry = _0; }
276impl HexAdd<_9> for _2 { type Output = _B; type Carry = _0; }
277impl HexAdd<_9> for _3 { type Output = _C; type Carry = _0; }
278impl HexAdd<_9> for _4 { type Output = _D; type Carry = _0; }
279impl HexAdd<_9> for _5 { type Output = _E; type Carry = _0; }
280impl HexAdd<_9> for _6 { type Output = _F; type Carry = _0; }
281impl HexAdd<_9> for _7 { type Output = _0; type Carry = _1; }
282impl HexAdd<_9> for _8 { type Output = _1; type Carry = _1; }
283impl HexAdd<_9> for _9 { type Output = _2; type Carry = _1; }
284impl HexAdd<_9> for _A { type Output = _3; type Carry = _1; }
285impl HexAdd<_9> for _B { type Output = _4; type Carry = _1; }
286impl HexAdd<_9> for _C { type Output = _5; type Carry = _1; }
287impl HexAdd<_9> for _D { type Output = _6; type Carry = _1; }
288impl HexAdd<_9> for _E { type Output = _7; type Carry = _1; }
289impl HexAdd<_9> for _F { type Output = _8; type Carry = _1; }
290impl HexAdd<_A> for _0 { type Output = _A; type Carry = _0; }
291impl HexAdd<_A> for _1 { type Output = _B; type Carry = _0; }
292impl HexAdd<_A> for _2 { type Output = _C; type Carry = _0; }
293impl HexAdd<_A> for _3 { type Output = _D; type Carry = _0; }
294impl HexAdd<_A> for _4 { type Output = _E; type Carry = _0; }
295impl HexAdd<_A> for _5 { type Output = _F; type Carry = _0; }
296impl HexAdd<_A> for _6 { type Output = _0; type Carry = _1; }
297impl HexAdd<_A> for _7 { type Output = _1; type Carry = _1; }
298impl HexAdd<_A> for _8 { type Output = _2; type Carry = _1; }
299impl HexAdd<_A> for _9 { type Output = _3; type Carry = _1; }
300impl HexAdd<_A> for _A { type Output = _4; type Carry = _1; }
301impl HexAdd<_A> for _B { type Output = _5; type Carry = _1; }
302impl HexAdd<_A> for _C { type Output = _6; type Carry = _1; }
303impl HexAdd<_A> for _D { type Output = _7; type Carry = _1; }
304impl HexAdd<_A> for _E { type Output = _8; type Carry = _1; }
305impl HexAdd<_A> for _F { type Output = _9; type Carry = _1; }
306impl HexAdd<_B> for _0 { type Output = _B; type Carry = _0; }
307impl HexAdd<_B> for _1 { type Output = _C; type Carry = _0; }
308impl HexAdd<_B> for _2 { type Output = _D; type Carry = _0; }
309impl HexAdd<_B> for _3 { type Output = _E; type Carry = _0; }
310impl HexAdd<_B> for _4 { type Output = _F; type Carry = _0; }
311impl HexAdd<_B> for _5 { type Output = _0; type Carry = _1; }
312impl HexAdd<_B> for _6 { type Output = _1; type Carry = _1; }
313impl HexAdd<_B> for _7 { type Output = _2; type Carry = _1; }
314impl HexAdd<_B> for _8 { type Output = _3; type Carry = _1; }
315impl HexAdd<_B> for _9 { type Output = _4; type Carry = _1; }
316impl HexAdd<_B> for _A { type Output = _5; type Carry = _1; }
317impl HexAdd<_B> for _B { type Output = _6; type Carry = _1; }
318impl HexAdd<_B> for _C { type Output = _7; type Carry = _1; }
319impl HexAdd<_B> for _D { type Output = _8; type Carry = _1; }
320impl HexAdd<_B> for _E { type Output = _9; type Carry = _1; }
321impl HexAdd<_B> for _F { type Output = _A; type Carry = _1; }
322impl HexAdd<_C> for _0 { type Output = _C; type Carry = _0; }
323impl HexAdd<_C> for _1 { type Output = _D; type Carry = _0; }
324impl HexAdd<_C> for _2 { type Output = _E; type Carry = _0; }
325impl HexAdd<_C> for _3 { type Output = _F; type Carry = _0; }
326impl HexAdd<_C> for _4 { type Output = _0; type Carry = _1; }
327impl HexAdd<_C> for _5 { type Output = _1; type Carry = _1; }
328impl HexAdd<_C> for _6 { type Output = _2; type Carry = _1; }
329impl HexAdd<_C> for _7 { type Output = _3; type Carry = _1; }
330impl HexAdd<_C> for _8 { type Output = _4; type Carry = _1; }
331impl HexAdd<_C> for _9 { type Output = _5; type Carry = _1; }
332impl HexAdd<_C> for _A { type Output = _6; type Carry = _1; }
333impl HexAdd<_C> for _B { type Output = _7; type Carry = _1; }
334impl HexAdd<_C> for _C { type Output = _8; type Carry = _1; }
335impl HexAdd<_C> for _D { type Output = _9; type Carry = _1; }
336impl HexAdd<_C> for _E { type Output = _A; type Carry = _1; }
337impl HexAdd<_C> for _F { type Output = _B; type Carry = _1; }
338impl HexAdd<_D> for _0 { type Output = _D; type Carry = _0; }
339impl HexAdd<_D> for _1 { type Output = _E; type Carry = _0; }
340impl HexAdd<_D> for _2 { type Output = _F; type Carry = _0; }
341impl HexAdd<_D> for _3 { type Output = _0; type Carry = _1; }
342impl HexAdd<_D> for _4 { type Output = _1; type Carry = _1; }
343impl HexAdd<_D> for _5 { type Output = _2; type Carry = _1; }
344impl HexAdd<_D> for _6 { type Output = _3; type Carry = _1; }
345impl HexAdd<_D> for _7 { type Output = _4; type Carry = _1; }
346impl HexAdd<_D> for _8 { type Output = _5; type Carry = _1; }
347impl HexAdd<_D> for _9 { type Output = _6; type Carry = _1; }
348impl HexAdd<_D> for _A { type Output = _7; type Carry = _1; }
349impl HexAdd<_D> for _B { type Output = _8; type Carry = _1; }
350impl HexAdd<_D> for _C { type Output = _9; type Carry = _1; }
351impl HexAdd<_D> for _D { type Output = _A; type Carry = _1; }
352impl HexAdd<_D> for _E { type Output = _B; type Carry = _1; }
353impl HexAdd<_D> for _F { type Output = _C; type Carry = _1; }
354impl HexAdd<_E> for _0 { type Output = _E; type Carry = _0; }
355impl HexAdd<_E> for _1 { type Output = _F; type Carry = _0; }
356impl HexAdd<_E> for _2 { type Output = _0; type Carry = _1; }
357impl HexAdd<_E> for _3 { type Output = _1; type Carry = _1; }
358impl HexAdd<_E> for _4 { type Output = _2; type Carry = _1; }
359impl HexAdd<_E> for _5 { type Output = _3; type Carry = _1; }
360impl HexAdd<_E> for _6 { type Output = _4; type Carry = _1; }
361impl HexAdd<_E> for _7 { type Output = _5; type Carry = _1; }
362impl HexAdd<_E> for _8 { type Output = _6; type Carry = _1; }
363impl HexAdd<_E> for _9 { type Output = _7; type Carry = _1; }
364impl HexAdd<_E> for _A { type Output = _8; type Carry = _1; }
365impl HexAdd<_E> for _B { type Output = _9; type Carry = _1; }
366impl HexAdd<_E> for _C { type Output = _A; type Carry = _1; }
367impl HexAdd<_E> for _D { type Output = _B; type Carry = _1; }
368impl HexAdd<_E> for _E { type Output = _C; type Carry = _1; }
369impl HexAdd<_E> for _F { type Output = _D; type Carry = _1; }
370impl HexAdd<_F> for _0 { type Output = _F; type Carry = _0; }
371impl HexAdd<_F> for _1 { type Output = _0; type Carry = _1; }
372impl HexAdd<_F> for _2 { type Output = _1; type Carry = _1; }
373impl HexAdd<_F> for _3 { type Output = _2; type Carry = _1; }
374impl HexAdd<_F> for _4 { type Output = _3; type Carry = _1; }
375impl HexAdd<_F> for _5 { type Output = _4; type Carry = _1; }
376impl HexAdd<_F> for _6 { type Output = _5; type Carry = _1; }
377impl HexAdd<_F> for _7 { type Output = _6; type Carry = _1; }
378impl HexAdd<_F> for _8 { type Output = _7; type Carry = _1; }
379impl HexAdd<_F> for _9 { type Output = _8; type Carry = _1; }
380impl HexAdd<_F> for _A { type Output = _9; type Carry = _1; }
381impl HexAdd<_F> for _B { type Output = _A; type Carry = _1; }
382impl HexAdd<_F> for _C { type Output = _B; type Carry = _1; }
383impl HexAdd<_F> for _D { type Output = _C; type Carry = _1; }
384impl HexAdd<_F> for _E { type Output = _D; type Carry = _1; }
385impl HexAdd<_F> for _F { type Output = _E; type Carry = _1; }
386
387/// This is an internal implementation of addition of three number
388/// 
389/// Example
390/// ```
391/// use const_arithmetic::*;
392/// let a = _5;
393/// let b = _6;
394/// let c = _7;
395/// let result = _2;
396/// let overflow = _1;
397/// 
398/// fn hex_add<H1, H2, H3, B, C>(_h1: H1, _h2: H2, _h3: H3, _b: B, _c: C) where
399/// H1: Hex,
400/// H2: Hex,
401/// H3: Hex,
402/// B: Hex,
403/// C: Hex,
404/// H1: HexAdd3<H2, H3, Output = B, Carry = C>
405/// {}
406/// 
407/// hex_add(a, b, c, result, overflow);
408/// ```
409pub trait HexAdd3<H1: Hex, H2: Hex> { type Output: Hex; type Carry: Hex; }
410impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _0 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
411impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _1 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
412impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _2 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
413impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _3 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
414impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _4 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
415impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _5 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
416impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _6 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
417impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _7 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
418impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _8 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
419impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _9 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
420impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _A where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
421impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _B where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
422impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _C where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
423impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _D where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
424impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _E where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
425impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_0, H> for _F where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
426impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _0 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
427impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _1 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
428impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _2 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
429impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _3 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
430impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _4 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
431impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _5 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
432impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _6 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
433impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _7 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
434impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _8 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
435impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _9 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
436impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _A where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
437impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _B where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
438impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _C where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
439impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _D where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
440impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _E where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
441impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_1, H> for _F where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
442impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _0 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
443impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _1 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
444impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _2 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
445impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _3 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
446impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _4 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
447impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _5 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
448impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _6 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
449impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _7 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
450impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _8 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
451impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _9 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
452impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _A where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
453impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _B where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
454impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _C where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
455impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _D where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
456impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _E where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
457impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_2, H> for _F where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
458impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _0 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
459impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _1 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
460impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _2 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
461impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _3 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
462impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _4 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
463impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _5 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
464impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _6 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
465impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _7 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
466impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _8 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
467impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _9 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
468impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _A where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
469impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _B where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
470impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _C where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
471impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _D where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
472impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _E where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
473impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_3, H> for _F where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
474impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _0 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
475impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _1 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
476impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _2 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
477impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _3 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
478impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _4 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
479impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _5 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
480impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _6 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
481impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _7 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
482impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _8 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
483impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _9 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
484impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _A where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
485impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _B where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
486impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _C where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
487impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _D where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
488impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _E where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
489impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_4, H> for _F where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
490impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _0 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
491impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _1 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
492impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _2 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
493impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _3 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
494impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _4 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
495impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _5 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
496impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _6 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
497impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _7 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
498impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _8 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
499impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _9 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
500impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _A where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
501impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _B where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
502impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _C where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
503impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _D where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
504impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _E where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
505impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_5, H> for _F where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
506impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _0 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
507impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _1 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
508impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _2 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
509impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _3 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
510impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _4 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
511impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _5 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
512impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _6 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
513impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _7 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
514impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _8 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
515impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _9 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
516impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _A where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
517impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _B where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
518impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _C where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
519impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _D where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
520impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _E where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
521impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_6, H> for _F where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
522impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _0 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
523impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _1 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
524impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _2 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
525impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _3 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
526impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _4 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
527impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _5 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
528impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _6 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
529impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _7 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
530impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _8 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
531impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _9 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
532impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _A where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
533impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _B where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
534impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _C where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
535impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _D where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
536impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _E where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
537impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_7, H> for _F where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
538impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _0 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
539impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _1 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
540impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _2 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
541impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _3 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
542impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _4 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
543impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _5 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
544impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _6 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
545impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _7 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
546impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _8 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
547impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _9 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
548impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _A where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
549impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _B where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
550impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _C where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
551impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _D where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
552impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _E where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
553impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_8, H> for _F where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
554impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _0 where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
555impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _1 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
556impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _2 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
557impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _3 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
558impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _4 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
559impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _5 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
560impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _6 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
561impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _7 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
562impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _8 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
563impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _9 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
564impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _A where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
565impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _B where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
566impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _C where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
567impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _D where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
568impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _E where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
569impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_9, H> for _F where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
570impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _0 where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
571impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _1 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
572impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _2 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
573impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _3 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
574impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _4 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
575impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _5 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
576impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _6 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
577impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _7 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
578impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _8 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
579impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _9 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
580impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _A where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
581impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _B where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
582impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _C where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
583impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _D where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
584impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _E where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
585impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_A, H> for _F where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
586impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _0 where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
587impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _1 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
588impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _2 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
589impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _3 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
590impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _4 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
591impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _5 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
592impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _6 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
593impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _7 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
594impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _8 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
595impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _9 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
596impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _A where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
597impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _B where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
598impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _C where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
599impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _D where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
600impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _E where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
601impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_B, H> for _F where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
602impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _0 where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
603impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _1 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
604impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _2 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
605impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _3 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
606impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _4 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
607impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _5 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
608impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _6 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
609impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _7 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
610impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _8 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
611impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _9 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
612impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _A where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
613impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _B where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
614impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _C where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
615impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _D where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
616impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _E where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
617impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_C, H> for _F where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
618impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _0 where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
619impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _1 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
620impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _2 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
621impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _3 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
622impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _4 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
623impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _5 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
624impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _6 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
625impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _7 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
626impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _8 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
627impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _9 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
628impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _A where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
629impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _B where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
630impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _C where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
631impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _D where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
632impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _E where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
633impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_D, H> for _F where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
634impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _0 where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
635impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _1 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
636impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _2 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
637impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _3 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
638impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _4 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
639impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _5 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
640impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _6 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
641impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _7 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
642impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _8 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
643impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _9 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
644impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _A where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
645impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _B where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
646impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _C where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
647impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _D where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
648impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _E where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
649impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_E, H> for _F where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
650impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _0 where H: HexAdd<_F, Output = R, Carry = C0>, C0: HexAdd<_0, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
651impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _1 where H: HexAdd<_0, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
652impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _2 where H: HexAdd<_1, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
653impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _3 where H: HexAdd<_2, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
654impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _4 where H: HexAdd<_3, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
655impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _5 where H: HexAdd<_4, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
656impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _6 where H: HexAdd<_5, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
657impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _7 where H: HexAdd<_6, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
658impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _8 where H: HexAdd<_7, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
659impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _9 where H: HexAdd<_8, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
660impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _A where H: HexAdd<_9, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
661impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _B where H: HexAdd<_A, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
662impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _C where H: HexAdd<_B, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
663impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _D where H: HexAdd<_C, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
664impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _E where H: HexAdd<_D, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
665impl<H: Hex, R: Hex, C0: Hex, Cr: Hex, C_: Hex> HexAdd3<_F, H> for _F where H: HexAdd<_E, Output = R, Carry = C0>, C0: HexAdd<_1, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = R; type Carry = Cr; }
666
667/// This is an internal implementation of addition of 4 number
668pub(crate) trait HexAdd4<H1: Hex, H2: Hex, H3: Hex> { type Output: Hex; type Carry: Hex; }
669impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _0 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_0, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
670impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _1 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_1, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
671impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _2 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_2, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
672impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _3 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_3, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
673impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _4 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
674impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _5 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
675impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _6 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
676impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _7 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
677impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _8 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_8, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
678impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _9 where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_9, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
679impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _A where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_A, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
680impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _B where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_B, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
681impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _C where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_C, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
682impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _D where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_D, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
683impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _E where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_E, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
684impl<H1, H2, H3, R1, C1, C2, Result, Cr, C_> HexAdd4<H1, H2, H3> for _F where H1: Hex, H2: Hex, H3: Hex, R1: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R1, Carry = C1>, R1: HexAdd<_F, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
685
686/// This is an internal implementation of addition of 5 number
687pub(crate) trait HexAdd5<H1: Hex, H2: Hex, H3: Hex, H4: Hex> { type Output: Hex; type Carry: Hex; }
688impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _0 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_0, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
689impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _1 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_1, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
690impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _2 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_2, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
691impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _3 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_3, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
692impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _4 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_4, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
693impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _5 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_5, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
694impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _6 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_6, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
695impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _7 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_7, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
696impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _8 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_8, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
697impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _9 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_9, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
698impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _A where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_A, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
699impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _B where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_B, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
700impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _C where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_C, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
701impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _D where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_D, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
702impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _E where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_E, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
703impl<H1, H2, H3, H4, R, C1, C2, Result, Cr, C_> HexAdd5<H1, H2, H3, H4> for _F where H1: Hex, H2: Hex, H3: Hex, H4: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd3<H2, H3, Output = R, Carry = C1>, R: HexAdd3<_F, H4, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
704
705/// This is an internal implementation of addition of 6 number
706pub(crate) trait HexAdd6<H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex> { type Output: Hex; type Carry: Hex; }
707impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _0 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_0, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
708impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _1 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_1, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
709impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _2 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_2, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
710impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _3 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_3, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
711impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _4 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_4, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
712impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _5 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_5, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
713impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _6 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_6, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
714impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _7 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_7, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
715impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _8 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_8, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
716impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _9 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_9, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
717impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _A where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_A, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
718impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _B where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_B, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
719impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _C where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_C, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
720impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _D where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_D, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
721impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _E where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_E, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
722impl<H1, H2, H3, H4, H5, R, C1, C2, Result, Cr, C_> HexAdd6<H1, H2, H3, H4, H5> for _F where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd4<H2, H3, H4, Output = R, Carry = C1>, R: HexAdd3<_F, H5, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
723
724/// This is an internal implementation of addition of 7 number
725pub(crate) trait HexAdd7<H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex> { type Output: Hex; type Carry: Hex; }
726impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _0 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_0, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
727impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _1 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_1, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
728impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _2 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_2, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
729impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _3 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_3, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
730impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _4 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_4, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
731impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _5 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_5, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
732impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _6 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_6, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
733impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _7 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_7, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
734impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _8 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_8, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
735impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _9 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_9, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
736impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _A where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_A, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
737impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _B where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_B, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
738impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _C where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_C, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
739impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _D where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_D, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
740impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _E where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_E, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
741impl<H1, H2, H3, H4, H5, H6, R, C1, C2, Result, Cr, C_> HexAdd7<H1, H2, H3, H4, H5, H6> for _F where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd5<H2, H3, H4, H5, Output = R, Carry = C1>, R: HexAdd3<_F, H6, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
742
743/// This is an internal implementation of addition of 8 number
744pub(crate) trait HexAdd8<H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex> { type Output: Hex; type Carry: Hex; }
745impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _0 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_0, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
746impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _1 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_1, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
747impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _2 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_2, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
748impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _3 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_3, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
749impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _4 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_4, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
750impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _5 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_5, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
751impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _6 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_6, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
752impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _7 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_7, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
753impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _8 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_8, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
754impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _9 where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_9, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
755impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _A where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_A, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
756impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _B where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_B, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
757impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _C where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_C, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
758impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _D where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_D, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
759impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _E where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_E, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
760impl<H1, H2, H3, H4, H5, H6, H7, R, C1, C2, Result, Cr, C_> HexAdd8<H1, H2, H3, H4, H5, H6, H7> for _F where H1: Hex, H2: Hex, H3: Hex, H4: Hex, H5: Hex, H6: Hex, H7: Hex, R: Hex, Result: Hex, C1: Hex, C2: Hex, Cr: Hex, C_: Hex, H1: HexAdd6<H2, H3, H4, H5, H6, Output = R, Carry = C1>, R: HexAdd3<_F, H7, Output = Result, Carry = C2>, C1: HexAdd<C2, Output = Cr, Carry = C_>, C_: HexAssertEqual<_0> { type Output = Result; type Carry = Cr; }
761
762/// This is an internal implementation of equality on hexadecimal. False evaluates to _0 and true evaluates to _1
763/// 
764/// Example
765/// ```
766/// use const_arithmetic::*;
767/// let a = _5;
768/// let b = _5;
769/// 
770/// fn hex_equal<H1, H2, B>(_h1: H1, _h2: H2) where
771/// H1: Hex,
772/// H2: Hex,
773/// B: Binary,
774/// H1: HexEqual<H2, Output = B> ,
775/// B: AssertTrue
776/// {}
777/// 
778/// hex_equal(a, b);
779/// 
780/// let c = _1;
781/// fn hex_neq<H1, H2, B>(_h1: H1, _h2: H2) where
782/// H1: Hex,
783/// H2: Hex,
784/// B: Binary,
785/// H1: HexEqual<H2, Output = B> ,
786/// B: AssertFalse
787/// {}
788/// 
789/// hex_neq(a, c);
790/// ```
791pub trait HexEqual<H: Hex> { type Output: Binary; }
792impl HexEqual<_0> for _0 { type Output = _1; }
793impl HexEqual<_0> for _1 { type Output = _0; }
794impl HexEqual<_0> for _2 { type Output = _0; }
795impl HexEqual<_0> for _3 { type Output = _0; }
796impl HexEqual<_0> for _4 { type Output = _0; }
797impl HexEqual<_0> for _5 { type Output = _0; }
798impl HexEqual<_0> for _6 { type Output = _0; }
799impl HexEqual<_0> for _7 { type Output = _0; }
800impl HexEqual<_0> for _8 { type Output = _0; }
801impl HexEqual<_0> for _9 { type Output = _0; }
802impl HexEqual<_0> for _A { type Output = _0; }
803impl HexEqual<_0> for _B { type Output = _0; }
804impl HexEqual<_0> for _C { type Output = _0; }
805impl HexEqual<_0> for _D { type Output = _0; }
806impl HexEqual<_0> for _E { type Output = _0; }
807impl HexEqual<_0> for _F { type Output = _0; }
808impl HexEqual<_1> for _0 { type Output = _0; }
809impl HexEqual<_1> for _1 { type Output = _1; }
810impl HexEqual<_1> for _2 { type Output = _0; }
811impl HexEqual<_1> for _3 { type Output = _0; }
812impl HexEqual<_1> for _4 { type Output = _0; }
813impl HexEqual<_1> for _5 { type Output = _0; }
814impl HexEqual<_1> for _6 { type Output = _0; }
815impl HexEqual<_1> for _7 { type Output = _0; }
816impl HexEqual<_1> for _8 { type Output = _0; }
817impl HexEqual<_1> for _9 { type Output = _0; }
818impl HexEqual<_1> for _A { type Output = _0; }
819impl HexEqual<_1> for _B { type Output = _0; }
820impl HexEqual<_1> for _C { type Output = _0; }
821impl HexEqual<_1> for _D { type Output = _0; }
822impl HexEqual<_1> for _E { type Output = _0; }
823impl HexEqual<_1> for _F { type Output = _0; }
824impl HexEqual<_2> for _0 { type Output = _0; }
825impl HexEqual<_2> for _1 { type Output = _0; }
826impl HexEqual<_2> for _2 { type Output = _1; }
827impl HexEqual<_2> for _3 { type Output = _0; }
828impl HexEqual<_2> for _4 { type Output = _0; }
829impl HexEqual<_2> for _5 { type Output = _0; }
830impl HexEqual<_2> for _6 { type Output = _0; }
831impl HexEqual<_2> for _7 { type Output = _0; }
832impl HexEqual<_2> for _8 { type Output = _0; }
833impl HexEqual<_2> for _9 { type Output = _0; }
834impl HexEqual<_2> for _A { type Output = _0; }
835impl HexEqual<_2> for _B { type Output = _0; }
836impl HexEqual<_2> for _C { type Output = _0; }
837impl HexEqual<_2> for _D { type Output = _0; }
838impl HexEqual<_2> for _E { type Output = _0; }
839impl HexEqual<_2> for _F { type Output = _0; }
840impl HexEqual<_3> for _0 { type Output = _0; }
841impl HexEqual<_3> for _1 { type Output = _0; }
842impl HexEqual<_3> for _2 { type Output = _0; }
843impl HexEqual<_3> for _3 { type Output = _1; }
844impl HexEqual<_3> for _4 { type Output = _0; }
845impl HexEqual<_3> for _5 { type Output = _0; }
846impl HexEqual<_3> for _6 { type Output = _0; }
847impl HexEqual<_3> for _7 { type Output = _0; }
848impl HexEqual<_3> for _8 { type Output = _0; }
849impl HexEqual<_3> for _9 { type Output = _0; }
850impl HexEqual<_3> for _A { type Output = _0; }
851impl HexEqual<_3> for _B { type Output = _0; }
852impl HexEqual<_3> for _C { type Output = _0; }
853impl HexEqual<_3> for _D { type Output = _0; }
854impl HexEqual<_3> for _E { type Output = _0; }
855impl HexEqual<_3> for _F { type Output = _0; }
856impl HexEqual<_4> for _0 { type Output = _0; }
857impl HexEqual<_4> for _1 { type Output = _0; }
858impl HexEqual<_4> for _2 { type Output = _0; }
859impl HexEqual<_4> for _3 { type Output = _0; }
860impl HexEqual<_4> for _4 { type Output = _1; }
861impl HexEqual<_4> for _5 { type Output = _0; }
862impl HexEqual<_4> for _6 { type Output = _0; }
863impl HexEqual<_4> for _7 { type Output = _0; }
864impl HexEqual<_4> for _8 { type Output = _0; }
865impl HexEqual<_4> for _9 { type Output = _0; }
866impl HexEqual<_4> for _A { type Output = _0; }
867impl HexEqual<_4> for _B { type Output = _0; }
868impl HexEqual<_4> for _C { type Output = _0; }
869impl HexEqual<_4> for _D { type Output = _0; }
870impl HexEqual<_4> for _E { type Output = _0; }
871impl HexEqual<_4> for _F { type Output = _0; }
872impl HexEqual<_5> for _0 { type Output = _0; }
873impl HexEqual<_5> for _1 { type Output = _0; }
874impl HexEqual<_5> for _2 { type Output = _0; }
875impl HexEqual<_5> for _3 { type Output = _0; }
876impl HexEqual<_5> for _4 { type Output = _0; }
877impl HexEqual<_5> for _5 { type Output = _1; }
878impl HexEqual<_5> for _6 { type Output = _0; }
879impl HexEqual<_5> for _7 { type Output = _0; }
880impl HexEqual<_5> for _8 { type Output = _0; }
881impl HexEqual<_5> for _9 { type Output = _0; }
882impl HexEqual<_5> for _A { type Output = _0; }
883impl HexEqual<_5> for _B { type Output = _0; }
884impl HexEqual<_5> for _C { type Output = _0; }
885impl HexEqual<_5> for _D { type Output = _0; }
886impl HexEqual<_5> for _E { type Output = _0; }
887impl HexEqual<_5> for _F { type Output = _0; }
888impl HexEqual<_6> for _0 { type Output = _0; }
889impl HexEqual<_6> for _1 { type Output = _0; }
890impl HexEqual<_6> for _2 { type Output = _0; }
891impl HexEqual<_6> for _3 { type Output = _0; }
892impl HexEqual<_6> for _4 { type Output = _0; }
893impl HexEqual<_6> for _5 { type Output = _0; }
894impl HexEqual<_6> for _6 { type Output = _1; }
895impl HexEqual<_6> for _7 { type Output = _0; }
896impl HexEqual<_6> for _8 { type Output = _0; }
897impl HexEqual<_6> for _9 { type Output = _0; }
898impl HexEqual<_6> for _A { type Output = _0; }
899impl HexEqual<_6> for _B { type Output = _0; }
900impl HexEqual<_6> for _C { type Output = _0; }
901impl HexEqual<_6> for _D { type Output = _0; }
902impl HexEqual<_6> for _E { type Output = _0; }
903impl HexEqual<_6> for _F { type Output = _0; }
904impl HexEqual<_7> for _0 { type Output = _0; }
905impl HexEqual<_7> for _1 { type Output = _0; }
906impl HexEqual<_7> for _2 { type Output = _0; }
907impl HexEqual<_7> for _3 { type Output = _0; }
908impl HexEqual<_7> for _4 { type Output = _0; }
909impl HexEqual<_7> for _5 { type Output = _0; }
910impl HexEqual<_7> for _6 { type Output = _0; }
911impl HexEqual<_7> for _7 { type Output = _1; }
912impl HexEqual<_7> for _8 { type Output = _0; }
913impl HexEqual<_7> for _9 { type Output = _0; }
914impl HexEqual<_7> for _A { type Output = _0; }
915impl HexEqual<_7> for _B { type Output = _0; }
916impl HexEqual<_7> for _C { type Output = _0; }
917impl HexEqual<_7> for _D { type Output = _0; }
918impl HexEqual<_7> for _E { type Output = _0; }
919impl HexEqual<_7> for _F { type Output = _0; }
920impl HexEqual<_8> for _0 { type Output = _0; }
921impl HexEqual<_8> for _1 { type Output = _0; }
922impl HexEqual<_8> for _2 { type Output = _0; }
923impl HexEqual<_8> for _3 { type Output = _0; }
924impl HexEqual<_8> for _4 { type Output = _0; }
925impl HexEqual<_8> for _5 { type Output = _0; }
926impl HexEqual<_8> for _6 { type Output = _0; }
927impl HexEqual<_8> for _7 { type Output = _0; }
928impl HexEqual<_8> for _8 { type Output = _1; }
929impl HexEqual<_8> for _9 { type Output = _0; }
930impl HexEqual<_8> for _A { type Output = _0; }
931impl HexEqual<_8> for _B { type Output = _0; }
932impl HexEqual<_8> for _C { type Output = _0; }
933impl HexEqual<_8> for _D { type Output = _0; }
934impl HexEqual<_8> for _E { type Output = _0; }
935impl HexEqual<_8> for _F { type Output = _0; }
936impl HexEqual<_9> for _0 { type Output = _0; }
937impl HexEqual<_9> for _1 { type Output = _0; }
938impl HexEqual<_9> for _2 { type Output = _0; }
939impl HexEqual<_9> for _3 { type Output = _0; }
940impl HexEqual<_9> for _4 { type Output = _0; }
941impl HexEqual<_9> for _5 { type Output = _0; }
942impl HexEqual<_9> for _6 { type Output = _0; }
943impl HexEqual<_9> for _7 { type Output = _0; }
944impl HexEqual<_9> for _8 { type Output = _0; }
945impl HexEqual<_9> for _9 { type Output = _1; }
946impl HexEqual<_9> for _A { type Output = _0; }
947impl HexEqual<_9> for _B { type Output = _0; }
948impl HexEqual<_9> for _C { type Output = _0; }
949impl HexEqual<_9> for _D { type Output = _0; }
950impl HexEqual<_9> for _E { type Output = _0; }
951impl HexEqual<_9> for _F { type Output = _0; }
952impl HexEqual<_A> for _0 { type Output = _0; }
953impl HexEqual<_A> for _1 { type Output = _0; }
954impl HexEqual<_A> for _2 { type Output = _0; }
955impl HexEqual<_A> for _3 { type Output = _0; }
956impl HexEqual<_A> for _4 { type Output = _0; }
957impl HexEqual<_A> for _5 { type Output = _0; }
958impl HexEqual<_A> for _6 { type Output = _0; }
959impl HexEqual<_A> for _7 { type Output = _0; }
960impl HexEqual<_A> for _8 { type Output = _0; }
961impl HexEqual<_A> for _9 { type Output = _0; }
962impl HexEqual<_A> for _A { type Output = _1; }
963impl HexEqual<_A> for _B { type Output = _0; }
964impl HexEqual<_A> for _C { type Output = _0; }
965impl HexEqual<_A> for _D { type Output = _0; }
966impl HexEqual<_A> for _E { type Output = _0; }
967impl HexEqual<_A> for _F { type Output = _0; }
968impl HexEqual<_B> for _0 { type Output = _0; }
969impl HexEqual<_B> for _1 { type Output = _0; }
970impl HexEqual<_B> for _2 { type Output = _0; }
971impl HexEqual<_B> for _3 { type Output = _0; }
972impl HexEqual<_B> for _4 { type Output = _0; }
973impl HexEqual<_B> for _5 { type Output = _0; }
974impl HexEqual<_B> for _6 { type Output = _0; }
975impl HexEqual<_B> for _7 { type Output = _0; }
976impl HexEqual<_B> for _8 { type Output = _0; }
977impl HexEqual<_B> for _9 { type Output = _0; }
978impl HexEqual<_B> for _A { type Output = _0; }
979impl HexEqual<_B> for _B { type Output = _1; }
980impl HexEqual<_B> for _C { type Output = _0; }
981impl HexEqual<_B> for _D { type Output = _0; }
982impl HexEqual<_B> for _E { type Output = _0; }
983impl HexEqual<_B> for _F { type Output = _0; }
984impl HexEqual<_C> for _0 { type Output = _0; }
985impl HexEqual<_C> for _1 { type Output = _0; }
986impl HexEqual<_C> for _2 { type Output = _0; }
987impl HexEqual<_C> for _3 { type Output = _0; }
988impl HexEqual<_C> for _4 { type Output = _0; }
989impl HexEqual<_C> for _5 { type Output = _0; }
990impl HexEqual<_C> for _6 { type Output = _0; }
991impl HexEqual<_C> for _7 { type Output = _0; }
992impl HexEqual<_C> for _8 { type Output = _0; }
993impl HexEqual<_C> for _9 { type Output = _0; }
994impl HexEqual<_C> for _A { type Output = _0; }
995impl HexEqual<_C> for _B { type Output = _0; }
996impl HexEqual<_C> for _C { type Output = _1; }
997impl HexEqual<_C> for _D { type Output = _0; }
998impl HexEqual<_C> for _E { type Output = _0; }
999impl HexEqual<_C> for _F { type Output = _0; }
1000impl HexEqual<_D> for _0 { type Output = _0; }
1001impl HexEqual<_D> for _1 { type Output = _0; }
1002impl HexEqual<_D> for _2 { type Output = _0; }
1003impl HexEqual<_D> for _3 { type Output = _0; }
1004impl HexEqual<_D> for _4 { type Output = _0; }
1005impl HexEqual<_D> for _5 { type Output = _0; }
1006impl HexEqual<_D> for _6 { type Output = _0; }
1007impl HexEqual<_D> for _7 { type Output = _0; }
1008impl HexEqual<_D> for _8 { type Output = _0; }
1009impl HexEqual<_D> for _9 { type Output = _0; }
1010impl HexEqual<_D> for _A { type Output = _0; }
1011impl HexEqual<_D> for _B { type Output = _0; }
1012impl HexEqual<_D> for _C { type Output = _0; }
1013impl HexEqual<_D> for _D { type Output = _1; }
1014impl HexEqual<_D> for _E { type Output = _0; }
1015impl HexEqual<_D> for _F { type Output = _0; }
1016impl HexEqual<_E> for _0 { type Output = _0; }
1017impl HexEqual<_E> for _1 { type Output = _0; }
1018impl HexEqual<_E> for _2 { type Output = _0; }
1019impl HexEqual<_E> for _3 { type Output = _0; }
1020impl HexEqual<_E> for _4 { type Output = _0; }
1021impl HexEqual<_E> for _5 { type Output = _0; }
1022impl HexEqual<_E> for _6 { type Output = _0; }
1023impl HexEqual<_E> for _7 { type Output = _0; }
1024impl HexEqual<_E> for _8 { type Output = _0; }
1025impl HexEqual<_E> for _9 { type Output = _0; }
1026impl HexEqual<_E> for _A { type Output = _0; }
1027impl HexEqual<_E> for _B { type Output = _0; }
1028impl HexEqual<_E> for _C { type Output = _0; }
1029impl HexEqual<_E> for _D { type Output = _0; }
1030impl HexEqual<_E> for _E { type Output = _1; }
1031impl HexEqual<_E> for _F { type Output = _0; }
1032impl HexEqual<_F> for _0 { type Output = _0; }
1033impl HexEqual<_F> for _1 { type Output = _0; }
1034impl HexEqual<_F> for _2 { type Output = _0; }
1035impl HexEqual<_F> for _3 { type Output = _0; }
1036impl HexEqual<_F> for _4 { type Output = _0; }
1037impl HexEqual<_F> for _5 { type Output = _0; }
1038impl HexEqual<_F> for _6 { type Output = _0; }
1039impl HexEqual<_F> for _7 { type Output = _0; }
1040impl HexEqual<_F> for _8 { type Output = _0; }
1041impl HexEqual<_F> for _9 { type Output = _0; }
1042impl HexEqual<_F> for _A { type Output = _0; }
1043impl HexEqual<_F> for _B { type Output = _0; }
1044impl HexEqual<_F> for _C { type Output = _0; }
1045impl HexEqual<_F> for _D { type Output = _0; }
1046impl HexEqual<_F> for _E { type Output = _0; }
1047impl HexEqual<_F> for _F { type Output = _1; }
1048
1049/// This is an internal implementation of asserted equality on hexadecimal.
1050/// 
1051/// Example
1052/// ```
1053/// use const_arithmetic::*;
1054/// let a = _0;
1055/// let b = _0;
1056/// 
1057/// fn hex_equal<H1, H2>(_h1: H1, _h2: H2) where
1058/// H1: Hex,
1059/// H2: Hex,
1060/// H1: HexAssertEqual<H2> {}
1061/// 
1062/// hex_equal(a, b);
1063/// 
1064/// let c = _1;
1065/// // This does not compile
1066/// // hex_equal(a, c);
1067/// ```
1068pub trait HexAssertEqual<H: Hex> { }
1069impl HexAssertEqual<_0> for _0 { }
1070impl HexAssertEqual<_1> for _1 { }
1071impl HexAssertEqual<_2> for _2 { }
1072impl HexAssertEqual<_3> for _3 { }
1073impl HexAssertEqual<_4> for _4 { }
1074impl HexAssertEqual<_5> for _5 { }
1075impl HexAssertEqual<_6> for _6 { }
1076impl HexAssertEqual<_7> for _7 { }
1077impl HexAssertEqual<_8> for _8 { }
1078impl HexAssertEqual<_9> for _9 { }
1079impl HexAssertEqual<_A> for _A { }
1080impl HexAssertEqual<_B> for _B { }
1081impl HexAssertEqual<_C> for _C { }
1082impl HexAssertEqual<_D> for _D { }
1083impl HexAssertEqual<_E> for _E { }
1084impl HexAssertEqual<_F> for _F { }
1085
1086/// This represents 15 - x: the hexadecimal complement
1087pub(crate) trait HexNot { type Output: Hex; }
1088impl HexNot for _0 { type Output = _F; }
1089impl HexNot for _1 { type Output = _E; }
1090impl HexNot for _2 { type Output = _D; }
1091impl HexNot for _3 { type Output = _C; }
1092impl HexNot for _4 { type Output = _B; }
1093impl HexNot for _5 { type Output = _A; }
1094impl HexNot for _6 { type Output = _9; }
1095impl HexNot for _7 { type Output = _8; }
1096impl HexNot for _8 { type Output = _7; }
1097impl HexNot for _9 { type Output = _6; }
1098impl HexNot for _A { type Output = _5; }
1099impl HexNot for _B { type Output = _4; }
1100impl HexNot for _C { type Output = _3; }
1101impl HexNot for _D { type Output = _2; }
1102impl HexNot for _E { type Output = _1; }
1103impl HexNot for _F { type Output = _0; }
1104
1105/// This is an internal implementation of multiplication of two hexadecimal
1106pub trait HexMul<H: Hex> { type Output: Hex; type Carry: Hex; }
1107impl HexMul<_0> for _0 { type Output = _0; type Carry = _0; }
1108impl HexMul<_0> for _1 { type Output = _0; type Carry = _0; }
1109impl HexMul<_0> for _2 { type Output = _0; type Carry = _0; }
1110impl HexMul<_0> for _3 { type Output = _0; type Carry = _0; }
1111impl HexMul<_0> for _4 { type Output = _0; type Carry = _0; }
1112impl HexMul<_0> for _5 { type Output = _0; type Carry = _0; }
1113impl HexMul<_0> for _6 { type Output = _0; type Carry = _0; }
1114impl HexMul<_0> for _7 { type Output = _0; type Carry = _0; }
1115impl HexMul<_0> for _8 { type Output = _0; type Carry = _0; }
1116impl HexMul<_0> for _9 { type Output = _0; type Carry = _0; }
1117impl HexMul<_0> for _A { type Output = _0; type Carry = _0; }
1118impl HexMul<_0> for _B { type Output = _0; type Carry = _0; }
1119impl HexMul<_0> for _C { type Output = _0; type Carry = _0; }
1120impl HexMul<_0> for _D { type Output = _0; type Carry = _0; }
1121impl HexMul<_0> for _E { type Output = _0; type Carry = _0; }
1122impl HexMul<_0> for _F { type Output = _0; type Carry = _0; }
1123impl HexMul<_1> for _0 { type Output = _0; type Carry = _0; }
1124impl HexMul<_1> for _1 { type Output = _1; type Carry = _0; }
1125impl HexMul<_1> for _2 { type Output = _2; type Carry = _0; }
1126impl HexMul<_1> for _3 { type Output = _3; type Carry = _0; }
1127impl HexMul<_1> for _4 { type Output = _4; type Carry = _0; }
1128impl HexMul<_1> for _5 { type Output = _5; type Carry = _0; }
1129impl HexMul<_1> for _6 { type Output = _6; type Carry = _0; }
1130impl HexMul<_1> for _7 { type Output = _7; type Carry = _0; }
1131impl HexMul<_1> for _8 { type Output = _8; type Carry = _0; }
1132impl HexMul<_1> for _9 { type Output = _9; type Carry = _0; }
1133impl HexMul<_1> for _A { type Output = _A; type Carry = _0; }
1134impl HexMul<_1> for _B { type Output = _B; type Carry = _0; }
1135impl HexMul<_1> for _C { type Output = _C; type Carry = _0; }
1136impl HexMul<_1> for _D { type Output = _D; type Carry = _0; }
1137impl HexMul<_1> for _E { type Output = _E; type Carry = _0; }
1138impl HexMul<_1> for _F { type Output = _F; type Carry = _0; }
1139impl HexMul<_2> for _0 { type Output = _0; type Carry = _0; }
1140impl HexMul<_2> for _1 { type Output = _2; type Carry = _0; }
1141impl HexMul<_2> for _2 { type Output = _4; type Carry = _0; }
1142impl HexMul<_2> for _3 { type Output = _6; type Carry = _0; }
1143impl HexMul<_2> for _4 { type Output = _8; type Carry = _0; }
1144impl HexMul<_2> for _5 { type Output = _A; type Carry = _0; }
1145impl HexMul<_2> for _6 { type Output = _C; type Carry = _0; }
1146impl HexMul<_2> for _7 { type Output = _E; type Carry = _0; }
1147impl HexMul<_2> for _8 { type Output = _0; type Carry = _1; }
1148impl HexMul<_2> for _9 { type Output = _2; type Carry = _1; }
1149impl HexMul<_2> for _A { type Output = _4; type Carry = _1; }
1150impl HexMul<_2> for _B { type Output = _6; type Carry = _1; }
1151impl HexMul<_2> for _C { type Output = _8; type Carry = _1; }
1152impl HexMul<_2> for _D { type Output = _A; type Carry = _1; }
1153impl HexMul<_2> for _E { type Output = _C; type Carry = _1; }
1154impl HexMul<_2> for _F { type Output = _E; type Carry = _1; }
1155impl HexMul<_3> for _0 { type Output = _0; type Carry = _0; }
1156impl HexMul<_3> for _1 { type Output = _3; type Carry = _0; }
1157impl HexMul<_3> for _2 { type Output = _6; type Carry = _0; }
1158impl HexMul<_3> for _3 { type Output = _9; type Carry = _0; }
1159impl HexMul<_3> for _4 { type Output = _C; type Carry = _0; }
1160impl HexMul<_3> for _5 { type Output = _F; type Carry = _0; }
1161impl HexMul<_3> for _6 { type Output = _2; type Carry = _1; }
1162impl HexMul<_3> for _7 { type Output = _5; type Carry = _1; }
1163impl HexMul<_3> for _8 { type Output = _8; type Carry = _1; }
1164impl HexMul<_3> for _9 { type Output = _B; type Carry = _1; }
1165impl HexMul<_3> for _A { type Output = _E; type Carry = _1; }
1166impl HexMul<_3> for _B { type Output = _1; type Carry = _2; }
1167impl HexMul<_3> for _C { type Output = _4; type Carry = _2; }
1168impl HexMul<_3> for _D { type Output = _7; type Carry = _2; }
1169impl HexMul<_3> for _E { type Output = _A; type Carry = _2; }
1170impl HexMul<_3> for _F { type Output = _D; type Carry = _2; }
1171impl HexMul<_4> for _0 { type Output = _0; type Carry = _0; }
1172impl HexMul<_4> for _1 { type Output = _4; type Carry = _0; }
1173impl HexMul<_4> for _2 { type Output = _8; type Carry = _0; }
1174impl HexMul<_4> for _3 { type Output = _C; type Carry = _0; }
1175impl HexMul<_4> for _4 { type Output = _0; type Carry = _1; }
1176impl HexMul<_4> for _5 { type Output = _4; type Carry = _1; }
1177impl HexMul<_4> for _6 { type Output = _8; type Carry = _1; }
1178impl HexMul<_4> for _7 { type Output = _C; type Carry = _1; }
1179impl HexMul<_4> for _8 { type Output = _0; type Carry = _2; }
1180impl HexMul<_4> for _9 { type Output = _4; type Carry = _2; }
1181impl HexMul<_4> for _A { type Output = _8; type Carry = _2; }
1182impl HexMul<_4> for _B { type Output = _C; type Carry = _2; }
1183impl HexMul<_4> for _C { type Output = _0; type Carry = _3; }
1184impl HexMul<_4> for _D { type Output = _4; type Carry = _3; }
1185impl HexMul<_4> for _E { type Output = _8; type Carry = _3; }
1186impl HexMul<_4> for _F { type Output = _C; type Carry = _3; }
1187impl HexMul<_5> for _0 { type Output = _0; type Carry = _0; }
1188impl HexMul<_5> for _1 { type Output = _5; type Carry = _0; }
1189impl HexMul<_5> for _2 { type Output = _A; type Carry = _0; }
1190impl HexMul<_5> for _3 { type Output = _F; type Carry = _0; }
1191impl HexMul<_5> for _4 { type Output = _4; type Carry = _1; }
1192impl HexMul<_5> for _5 { type Output = _9; type Carry = _1; }
1193impl HexMul<_5> for _6 { type Output = _E; type Carry = _1; }
1194impl HexMul<_5> for _7 { type Output = _3; type Carry = _2; }
1195impl HexMul<_5> for _8 { type Output = _8; type Carry = _2; }
1196impl HexMul<_5> for _9 { type Output = _D; type Carry = _2; }
1197impl HexMul<_5> for _A { type Output = _2; type Carry = _3; }
1198impl HexMul<_5> for _B { type Output = _7; type Carry = _3; }
1199impl HexMul<_5> for _C { type Output = _C; type Carry = _3; }
1200impl HexMul<_5> for _D { type Output = _1; type Carry = _4; }
1201impl HexMul<_5> for _E { type Output = _6; type Carry = _4; }
1202impl HexMul<_5> for _F { type Output = _B; type Carry = _4; }
1203impl HexMul<_6> for _0 { type Output = _0; type Carry = _0; }
1204impl HexMul<_6> for _1 { type Output = _6; type Carry = _0; }
1205impl HexMul<_6> for _2 { type Output = _C; type Carry = _0; }
1206impl HexMul<_6> for _3 { type Output = _2; type Carry = _1; }
1207impl HexMul<_6> for _4 { type Output = _8; type Carry = _1; }
1208impl HexMul<_6> for _5 { type Output = _E; type Carry = _1; }
1209impl HexMul<_6> for _6 { type Output = _4; type Carry = _2; }
1210impl HexMul<_6> for _7 { type Output = _A; type Carry = _2; }
1211impl HexMul<_6> for _8 { type Output = _0; type Carry = _3; }
1212impl HexMul<_6> for _9 { type Output = _6; type Carry = _3; }
1213impl HexMul<_6> for _A { type Output = _C; type Carry = _3; }
1214impl HexMul<_6> for _B { type Output = _2; type Carry = _4; }
1215impl HexMul<_6> for _C { type Output = _8; type Carry = _4; }
1216impl HexMul<_6> for _D { type Output = _E; type Carry = _4; }
1217impl HexMul<_6> for _E { type Output = _4; type Carry = _5; }
1218impl HexMul<_6> for _F { type Output = _A; type Carry = _5; }
1219impl HexMul<_7> for _0 { type Output = _0; type Carry = _0; }
1220impl HexMul<_7> for _1 { type Output = _7; type Carry = _0; }
1221impl HexMul<_7> for _2 { type Output = _E; type Carry = _0; }
1222impl HexMul<_7> for _3 { type Output = _5; type Carry = _1; }
1223impl HexMul<_7> for _4 { type Output = _C; type Carry = _1; }
1224impl HexMul<_7> for _5 { type Output = _3; type Carry = _2; }
1225impl HexMul<_7> for _6 { type Output = _A; type Carry = _2; }
1226impl HexMul<_7> for _7 { type Output = _1; type Carry = _3; }
1227impl HexMul<_7> for _8 { type Output = _8; type Carry = _3; }
1228impl HexMul<_7> for _9 { type Output = _F; type Carry = _3; }
1229impl HexMul<_7> for _A { type Output = _6; type Carry = _4; }
1230impl HexMul<_7> for _B { type Output = _D; type Carry = _4; }
1231impl HexMul<_7> for _C { type Output = _4; type Carry = _5; }
1232impl HexMul<_7> for _D { type Output = _B; type Carry = _5; }
1233impl HexMul<_7> for _E { type Output = _2; type Carry = _6; }
1234impl HexMul<_7> for _F { type Output = _9; type Carry = _6; }
1235impl HexMul<_8> for _0 { type Output = _0; type Carry = _0; }
1236impl HexMul<_8> for _1 { type Output = _8; type Carry = _0; }
1237impl HexMul<_8> for _2 { type Output = _0; type Carry = _1; }
1238impl HexMul<_8> for _3 { type Output = _8; type Carry = _1; }
1239impl HexMul<_8> for _4 { type Output = _0; type Carry = _2; }
1240impl HexMul<_8> for _5 { type Output = _8; type Carry = _2; }
1241impl HexMul<_8> for _6 { type Output = _0; type Carry = _3; }
1242impl HexMul<_8> for _7 { type Output = _8; type Carry = _3; }
1243impl HexMul<_8> for _8 { type Output = _0; type Carry = _4; }
1244impl HexMul<_8> for _9 { type Output = _8; type Carry = _4; }
1245impl HexMul<_8> for _A { type Output = _0; type Carry = _5; }
1246impl HexMul<_8> for _B { type Output = _8; type Carry = _5; }
1247impl HexMul<_8> for _C { type Output = _0; type Carry = _6; }
1248impl HexMul<_8> for _D { type Output = _8; type Carry = _6; }
1249impl HexMul<_8> for _E { type Output = _0; type Carry = _7; }
1250impl HexMul<_8> for _F { type Output = _8; type Carry = _7; }
1251impl HexMul<_9> for _0 { type Output = _0; type Carry = _0; }
1252impl HexMul<_9> for _1 { type Output = _9; type Carry = _0; }
1253impl HexMul<_9> for _2 { type Output = _2; type Carry = _1; }
1254impl HexMul<_9> for _3 { type Output = _B; type Carry = _1; }
1255impl HexMul<_9> for _4 { type Output = _4; type Carry = _2; }
1256impl HexMul<_9> for _5 { type Output = _D; type Carry = _2; }
1257impl HexMul<_9> for _6 { type Output = _6; type Carry = _3; }
1258impl HexMul<_9> for _7 { type Output = _F; type Carry = _3; }
1259impl HexMul<_9> for _8 { type Output = _8; type Carry = _4; }
1260impl HexMul<_9> for _9 { type Output = _1; type Carry = _5; }
1261impl HexMul<_9> for _A { type Output = _A; type Carry = _5; }
1262impl HexMul<_9> for _B { type Output = _3; type Carry = _6; }
1263impl HexMul<_9> for _C { type Output = _C; type Carry = _6; }
1264impl HexMul<_9> for _D { type Output = _5; type Carry = _7; }
1265impl HexMul<_9> for _E { type Output = _E; type Carry = _7; }
1266impl HexMul<_9> for _F { type Output = _7; type Carry = _8; }
1267impl HexMul<_A> for _0 { type Output = _0; type Carry = _0; }
1268impl HexMul<_A> for _1 { type Output = _A; type Carry = _0; }
1269impl HexMul<_A> for _2 { type Output = _4; type Carry = _1; }
1270impl HexMul<_A> for _3 { type Output = _E; type Carry = _1; }
1271impl HexMul<_A> for _4 { type Output = _8; type Carry = _2; }
1272impl HexMul<_A> for _5 { type Output = _2; type Carry = _3; }
1273impl HexMul<_A> for _6 { type Output = _C; type Carry = _3; }
1274impl HexMul<_A> for _7 { type Output = _6; type Carry = _4; }
1275impl HexMul<_A> for _8 { type Output = _0; type Carry = _5; }
1276impl HexMul<_A> for _9 { type Output = _A; type Carry = _5; }
1277impl HexMul<_A> for _A { type Output = _4; type Carry = _6; }
1278impl HexMul<_A> for _B { type Output = _E; type Carry = _6; }
1279impl HexMul<_A> for _C { type Output = _8; type Carry = _7; }
1280impl HexMul<_A> for _D { type Output = _2; type Carry = _8; }
1281impl HexMul<_A> for _E { type Output = _C; type Carry = _8; }
1282impl HexMul<_A> for _F { type Output = _6; type Carry = _9; }
1283impl HexMul<_B> for _0 { type Output = _0; type Carry = _0; }
1284impl HexMul<_B> for _1 { type Output = _B; type Carry = _0; }
1285impl HexMul<_B> for _2 { type Output = _6; type Carry = _1; }
1286impl HexMul<_B> for _3 { type Output = _1; type Carry = _2; }
1287impl HexMul<_B> for _4 { type Output = _C; type Carry = _2; }
1288impl HexMul<_B> for _5 { type Output = _7; type Carry = _3; }
1289impl HexMul<_B> for _6 { type Output = _2; type Carry = _4; }
1290impl HexMul<_B> for _7 { type Output = _D; type Carry = _4; }
1291impl HexMul<_B> for _8 { type Output = _8; type Carry = _5; }
1292impl HexMul<_B> for _9 { type Output = _3; type Carry = _6; }
1293impl HexMul<_B> for _A { type Output = _E; type Carry = _6; }
1294impl HexMul<_B> for _B { type Output = _9; type Carry = _7; }
1295impl HexMul<_B> for _C { type Output = _4; type Carry = _8; }
1296impl HexMul<_B> for _D { type Output = _F; type Carry = _8; }
1297impl HexMul<_B> for _E { type Output = _A; type Carry = _9; }
1298impl HexMul<_B> for _F { type Output = _5; type Carry = _A; }
1299impl HexMul<_C> for _0 { type Output = _0; type Carry = _0; }
1300impl HexMul<_C> for _1 { type Output = _C; type Carry = _0; }
1301impl HexMul<_C> for _2 { type Output = _8; type Carry = _1; }
1302impl HexMul<_C> for _3 { type Output = _4; type Carry = _2; }
1303impl HexMul<_C> for _4 { type Output = _0; type Carry = _3; }
1304impl HexMul<_C> for _5 { type Output = _C; type Carry = _3; }
1305impl HexMul<_C> for _6 { type Output = _8; type Carry = _4; }
1306impl HexMul<_C> for _7 { type Output = _4; type Carry = _5; }
1307impl HexMul<_C> for _8 { type Output = _0; type Carry = _6; }
1308impl HexMul<_C> for _9 { type Output = _C; type Carry = _6; }
1309impl HexMul<_C> for _A { type Output = _8; type Carry = _7; }
1310impl HexMul<_C> for _B { type Output = _4; type Carry = _8; }
1311impl HexMul<_C> for _C { type Output = _0; type Carry = _9; }
1312impl HexMul<_C> for _D { type Output = _C; type Carry = _9; }
1313impl HexMul<_C> for _E { type Output = _8; type Carry = _A; }
1314impl HexMul<_C> for _F { type Output = _4; type Carry = _B; }
1315impl HexMul<_D> for _0 { type Output = _0; type Carry = _0; }
1316impl HexMul<_D> for _1 { type Output = _D; type Carry = _0; }
1317impl HexMul<_D> for _2 { type Output = _A; type Carry = _1; }
1318impl HexMul<_D> for _3 { type Output = _7; type Carry = _2; }
1319impl HexMul<_D> for _4 { type Output = _4; type Carry = _3; }
1320impl HexMul<_D> for _5 { type Output = _1; type Carry = _4; }
1321impl HexMul<_D> for _6 { type Output = _E; type Carry = _4; }
1322impl HexMul<_D> for _7 { type Output = _B; type Carry = _5; }
1323impl HexMul<_D> for _8 { type Output = _8; type Carry = _6; }
1324impl HexMul<_D> for _9 { type Output = _5; type Carry = _7; }
1325impl HexMul<_D> for _A { type Output = _2; type Carry = _8; }
1326impl HexMul<_D> for _B { type Output = _F; type Carry = _8; }
1327impl HexMul<_D> for _C { type Output = _C; type Carry = _9; }
1328impl HexMul<_D> for _D { type Output = _9; type Carry = _A; }
1329impl HexMul<_D> for _E { type Output = _6; type Carry = _B; }
1330impl HexMul<_D> for _F { type Output = _3; type Carry = _C; }
1331impl HexMul<_E> for _0 { type Output = _0; type Carry = _0; }
1332impl HexMul<_E> for _1 { type Output = _E; type Carry = _0; }
1333impl HexMul<_E> for _2 { type Output = _C; type Carry = _1; }
1334impl HexMul<_E> for _3 { type Output = _A; type Carry = _2; }
1335impl HexMul<_E> for _4 { type Output = _8; type Carry = _3; }
1336impl HexMul<_E> for _5 { type Output = _6; type Carry = _4; }
1337impl HexMul<_E> for _6 { type Output = _4; type Carry = _5; }
1338impl HexMul<_E> for _7 { type Output = _2; type Carry = _6; }
1339impl HexMul<_E> for _8 { type Output = _0; type Carry = _7; }
1340impl HexMul<_E> for _9 { type Output = _E; type Carry = _7; }
1341impl HexMul<_E> for _A { type Output = _C; type Carry = _8; }
1342impl HexMul<_E> for _B { type Output = _A; type Carry = _9; }
1343impl HexMul<_E> for _C { type Output = _8; type Carry = _A; }
1344impl HexMul<_E> for _D { type Output = _6; type Carry = _B; }
1345impl HexMul<_E> for _E { type Output = _4; type Carry = _C; }
1346impl HexMul<_E> for _F { type Output = _2; type Carry = _D; }
1347impl HexMul<_F> for _0 { type Output = _0; type Carry = _0; }
1348impl HexMul<_F> for _1 { type Output = _F; type Carry = _0; }
1349impl HexMul<_F> for _2 { type Output = _E; type Carry = _1; }
1350impl HexMul<_F> for _3 { type Output = _D; type Carry = _2; }
1351impl HexMul<_F> for _4 { type Output = _C; type Carry = _3; }
1352impl HexMul<_F> for _5 { type Output = _B; type Carry = _4; }
1353impl HexMul<_F> for _6 { type Output = _A; type Carry = _5; }
1354impl HexMul<_F> for _7 { type Output = _9; type Carry = _6; }
1355impl HexMul<_F> for _8 { type Output = _8; type Carry = _7; }
1356impl HexMul<_F> for _9 { type Output = _7; type Carry = _8; }
1357impl HexMul<_F> for _A { type Output = _6; type Carry = _9; }
1358impl HexMul<_F> for _B { type Output = _5; type Carry = _A; }
1359impl HexMul<_F> for _C { type Output = _4; type Carry = _B; }
1360impl HexMul<_F> for _D { type Output = _3; type Carry = _C; }
1361impl HexMul<_F> for _E { type Output = _2; type Carry = _D; }
1362impl HexMul<_F> for _F { type Output = _1; type Carry = _E; }