1pub trait Concat<Rhs> {
2 type Output;
3 fn concat(self, r: Rhs) -> Self::Output;
4}
5
6macro_rules! impl_tuples {
7 (($($l:ident),*$(,)?),($($r:ident),*$(,)?)) => {
8 impl<$($l,)*$($r),*> Concat<($($r,)*)> for ($($l,)*) {
9 type Output = ($($l,)*$($r,)*);
10 #[allow(non_snake_case)]
11 #[allow(clippy::unused_unit)]
12 #[inline(always)]
13 fn concat(self, ($($r,)*): ($($r,)*)) -> Self::Output {
14 let ($($l,)*) = self;
15 ($($l,)*$($r,)*)
16 }
17 }
18 };
19 (($($l:ident),*$(,)?)) => {
20 impl_tuples!(($($l),*),());
21 impl_tuples!(($($l),*),(R0));
22 impl_tuples!(($($l),*),(R0, R1));
23 impl_tuples!(($($l),*),(R0, R1, R2));
24 impl_tuples!(($($l),*),(R0, R1, R2, R3));
25 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4));
26 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5));
27 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6));
28 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7));
29 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8));
30 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9));
31 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10));
32 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11));
33 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12));
34 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13));
35 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14));
36 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15));
37 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16));
38 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17));
39 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18));
40 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19));
41 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20));
42 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21));
43 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22));
44 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23));
45 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24));
46 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25));
47 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26));
48 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27));
49 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28));
50 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29));
51 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30));
52 impl_tuples!(($($l),*),(R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31));
53 }
54}
55
56impl_tuples!(());
57impl_tuples!((L0));
58impl_tuples!((L0, L1));
59impl_tuples!((L0, L1, L2));
60impl_tuples!((L0, L1, L2, L3));
61impl_tuples!((L0, L1, L2, L3, L4));
62impl_tuples!((L0, L1, L2, L3, L4, L5));
63impl_tuples!((L0, L1, L2, L3, L4, L5, L6));
64impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7));
65impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8));
66impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9));
67impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10));
68impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11));
69impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12));
70impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13));
71impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14));
72impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15));
73impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16));
74impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17));
75impl_tuples!((L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18));
76impl_tuples!((
77 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19
78));
79impl_tuples!((
80 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20
81));
82impl_tuples!((
83 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
84 L21
85));
86impl_tuples!((
87 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
88 L21, L22
89));
90impl_tuples!((
91 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
92 L21, L22, L23
93));
94impl_tuples!((
95 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
96 L21, L22, L23, L24
97));
98impl_tuples!((
99 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
100 L21, L22, L23, L24, L25
101));
102impl_tuples!((
103 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
104 L21, L22, L23, L24, L25, L26
105));
106impl_tuples!((
107 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
108 L21, L22, L23, L24, L25, L26, L27
109));
110impl_tuples!((
111 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
112 L21, L22, L23, L24, L25, L26, L27, L28
113));
114impl_tuples!((
115 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
116 L21, L22, L23, L24, L25, L26, L27, L28, L29
117));
118impl_tuples!((
119 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
120 L21, L22, L23, L24, L25, L26, L27, L28, L29, L30
121));
122impl_tuples!((
123 L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,
124 L21, L22, L23, L24, L25, L26, L27, L28, L29, L30, L31
125));