tupletools/
pop_back.rs

1pub trait PopBack {
2    type Output;
3    fn pop_back(self) -> Self::Output;
4}
5
6impl<T1> PopBack for (T1,) {
7    type Output = ();
8    fn pop_back(self) -> Self::Output {
9        ()
10    }
11}
12
13impl<T1, T2> PopBack for (T1, T2) {
14    type Output = (T1,);
15    fn pop_back(self) -> Self::Output {
16        (self.0,)
17    }
18}
19
20impl<T1, T2, T3> PopBack for (T1, T2, T3) {
21    type Output = (T1, T2);
22    fn pop_back(self) -> Self::Output {
23        (self.0, self.1)
24    }
25}
26
27impl<T1, T2, T3, T4> PopBack for (T1, T2, T3, T4) {
28    type Output = (T1, T2, T3);
29    fn pop_back(self) -> Self::Output {
30        (self.0, self.1, self.2)
31    }
32}
33
34impl<T1, T2, T3, T4, T5> PopBack for (T1, T2, T3, T4, T5) {
35    type Output = (T1, T2, T3, T4);
36    fn pop_back(self) -> Self::Output {
37        (self.0, self.1, self.2, self.3)
38    }
39}
40
41impl<T1, T2, T3, T4, T5, T6> PopBack for (T1, T2, T3, T4, T5, T6) {
42    type Output = (T1, T2, T3, T4, T5);
43    fn pop_back(self) -> Self::Output {
44        (self.0, self.1, self.2, self.3, self.4)
45    }
46}
47
48impl<T1, T2, T3, T4, T5, T6, T7> PopBack for (T1, T2, T3, T4, T5, T6, T7) {
49    type Output = (T1, T2, T3, T4, T5, T6);
50    fn pop_back(self) -> Self::Output {
51        (self.0, self.1, self.2, self.3, self.4, self.5)
52    }
53}
54
55impl<T1, T2, T3, T4, T5, T6, T7, T8> PopBack for (T1, T2, T3, T4, T5, T6, T7, T8) {
56    type Output = (T1, T2, T3, T4, T5, T6, T7);
57    fn pop_back(self) -> Self::Output {
58        (self.0, self.1, self.2, self.3, self.4, self.5, self.6)
59    }
60}
61
62impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> PopBack for (T1, T2, T3, T4, T5, T6, T7, T8, T9) {
63    type Output = (T1, T2, T3, T4, T5, T6, T7, T8);
64    fn pop_back(self) -> Self::Output {
65        (
66            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7,
67        )
68    }
69}
70
71impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> PopBack
72    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
73{
74    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9);
75    fn pop_back(self) -> Self::Output {
76        (
77            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8,
78        )
79    }
80}
81
82impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> PopBack
83    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
84{
85    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
86    fn pop_back(self) -> Self::Output {
87        (
88            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
89        )
90    }
91}
92
93impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> PopBack
94    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
95{
96    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
97    fn pop_back(self) -> Self::Output {
98        (
99            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9, self.10,
100        )
101    }
102}
103
104impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> PopBack
105    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
106{
107    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
108    fn pop_back(self) -> Self::Output {
109        (
110            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
111            self.10, self.11,
112        )
113    }
114}
115
116impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> PopBack
117    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
118{
119    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13);
120    fn pop_back(self) -> Self::Output {
121        (
122            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
123            self.10, self.11, self.12,
124        )
125    }
126}
127
128impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> PopBack
129    for (
130        T1,
131        T2,
132        T3,
133        T4,
134        T5,
135        T6,
136        T7,
137        T8,
138        T9,
139        T10,
140        T11,
141        T12,
142        T13,
143        T14,
144        T15,
145    )
146{
147    type Output = (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14);
148    fn pop_back(self) -> Self::Output {
149        (
150            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
151            self.10, self.11, self.12, self.13,
152        )
153    }
154}
155
156impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> PopBack
157    for (
158        T1,
159        T2,
160        T3,
161        T4,
162        T5,
163        T6,
164        T7,
165        T8,
166        T9,
167        T10,
168        T11,
169        T12,
170        T13,
171        T14,
172        T15,
173        T16,
174    )
175{
176    type Output = (
177        T1,
178        T2,
179        T3,
180        T4,
181        T5,
182        T6,
183        T7,
184        T8,
185        T9,
186        T10,
187        T11,
188        T12,
189        T13,
190        T14,
191        T15,
192    );
193    fn pop_back(self) -> Self::Output {
194        (
195            self.0, self.1, self.2, self.3, self.4, self.5, self.6, self.7, self.8, self.9,
196            self.10, self.11, self.12, self.13, self.14,
197        )
198    }
199}