at_commands/
tuple_concat.rs

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}