xparse/
tuple.rs

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));