1#![allow(unused_attributes)]
2
3pub trait TupleConcat<C> {
4 type Out;
5 fn tup_cat(self, c: C) -> Self::Out;
6}
7
8impl<C> TupleConcat<C> for () {
9 type Out = (C,);
10 fn tup_cat(self, c: C) -> Self::Out {
11 (c,)
12 }
13}
14
15impl<T0, C> TupleConcat<C> for (T0,) {
16 type Out = (T0, C);
17 fn tup_cat(self, c: C) -> Self::Out {
18 (self.0, c)
19 }
20}
21
22impl<T0, T1, C> TupleConcat<C> for (T0, T1) {
23 type Out = (T0, T1, C);
24 fn tup_cat(self, c: C) -> Self::Out {
25 (self.0, self.1, c)
26 }
27}
28
29impl<T0, T1, T2, C> TupleConcat<C> for (T0, T1, T2) {
30 type Out = (T0, T1, T2, C);
31 fn tup_cat(self, c: C) -> Self::Out {
32 (self.0, self.1, self.2, c)
33 }
34}
35
36impl<T0, T1, T2, T3, C> TupleConcat<C> for (T0, T1, T2, T3) {
37 type Out = (T0, T1, T2, T3, C);
38 fn tup_cat(self, c: C) -> Self::Out {
39 (self.0, self.1, self.2, self.3, c)
40 }
41}
42
43impl<T0, T1, T2, T3, T4, C> TupleConcat<C> for (T0, T1, T2, T3, T4) {
44 type Out = (T0, T1, T2, T3, T4, C);
45 fn tup_cat(self, c: C) -> Self::Out {
46 (self.0, self.1, self.2, self.3, self.4, c)
47 }
48}
49
50impl<T0, T1, T2, T3, T4, T5, C> TupleConcat<C> for (T0, T1, T2, T3, T4, T5) {
51 type Out = (T0, T1, T2, T3, T4, T5, C);
52 fn tup_cat(self, c: C) -> Self::Out {
53 (self.0, self.1, self.2, self.3, self.4, self.5, c)
54 }
55}
56
57impl<T0, T1, T2, T3, T4, T5, T6, C> TupleConcat<C> for (T0, T1, T2, T3, T4, T5, T6) {
58 type Out = (T0, T1, T2, T3, T4, T5, T6, C);
59 fn tup_cat(self, c: C) -> Self::Out {
60 (self.0, self.1, self.2, self.3, self.4, self.5, self.6, c)
61 }
62}
63
64impl<T0, T1, T2, T3, T4, T5, T6, T7, C> TupleConcat<C> for (T0, T1, T2, T3, T4, T5, T6, T7) {
65 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, C);
66 fn tup_cat(self, c: C) -> Self::Out {
67 (
68 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, c,
69 )
70 }
71}
72
73impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, C> TupleConcat<C>
74 for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
75{
76 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, T8, C);
77 fn tup_cat(self, c: C) -> Self::Out {
78 (
79 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, c,
80 )
81 }
82}
83
84impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C> TupleConcat<C>
85 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
86{
87 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C);
88 fn tup_cat(self, c: C) -> Self::Out {
89 (
90 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9, c,
91 )
92 }
93}
94
95impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, C> TupleConcat<C>
96 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
97{
98 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, C);
99 fn tup_cat(self, c: C) -> Self::Out {
100 (
101 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
102 self.10, c,
103 )
104 }
105}
106
107impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, C> TupleConcat<C>
108 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
109{
110 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, C);
111 fn tup_cat(self, c: C) -> Self::Out {
112 (
113 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
114 self.10, self.11, c,
115 )
116 }
117}
118
119impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, C> TupleConcat<C>
120 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
121{
122 type Out = (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, C);
123 fn tup_cat(self, c: C) -> Self::Out {
124 (
125 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
126 self.10, self.11, self.12, c,
127 )
128 }
129}
130
131impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, C> TupleConcat<C>
132 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
133{
134 type Out = (
135 T0,
136 T1,
137 T2,
138 T3,
139 T4,
140 T5,
141 T6,
142 T7,
143 T8,
144 T9,
145 T10,
146 T11,
147 T12,
148 T13,
149 C,
150 );
151 fn tup_cat(self, c: C) -> Self::Out {
152 (
153 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
154 self.10, self.11, self.12, self.13, c,
155 )
156 }
157}
158
159impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, C> TupleConcat<C>
160 for (
161 T0,
162 T1,
163 T2,
164 T3,
165 T4,
166 T5,
167 T6,
168 T7,
169 T8,
170 T9,
171 T10,
172 T11,
173 T12,
174 T13,
175 T14,
176 )
177{
178 type Out = (
179 T0,
180 T1,
181 T2,
182 T3,
183 T4,
184 T5,
185 T6,
186 T7,
187 T8,
188 T9,
189 T10,
190 T11,
191 T12,
192 T13,
193 T14,
194 C,
195 );
196 fn tup_cat(self, c: C) -> Self::Out {
197 (
198 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
199 self.10, self.11, self.12, self.13, self.14, c,
200 )
201 }
202}
203
204impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, C> TupleConcat<C>
205 for (
206 T0,
207 T1,
208 T2,
209 T3,
210 T4,
211 T5,
212 T6,
213 T7,
214 T8,
215 T9,
216 T10,
217 T11,
218 T12,
219 T13,
220 T14,
221 T15,
222 )
223{
224 type Out = (
225 T0,
226 T1,
227 T2,
228 T3,
229 T4,
230 T5,
231 T6,
232 T7,
233 T8,
234 T9,
235 T10,
236 T11,
237 T12,
238 T13,
239 T14,
240 T15,
241 C,
242 );
243 fn tup_cat(self, c: C) -> Self::Out {
244 (
245 self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
246 self.10, self.11, self.12, self.13, self.14, self.15, c,
247 )
248 }
249}