1use super::{
2 bindings::IMulticall3::Result as MulticallResult,
3 inner_types::{Dynamic, Failure, MulticallError, Result},
4};
5use alloy_primitives::Bytes;
6use alloy_sol_types::SolCall;
7
8mod private {
10 #[expect(unnameable_types)]
11 pub trait Sealed {}
12}
13use private::Sealed;
14
15#[doc(hidden)]
17#[expect(unnameable_types)]
18pub trait TuplePush<T> {
19 type Pushed;
21}
22
23#[doc(hidden)]
25pub trait CallTuple: Sealed {
26 type Returns;
73
74 type SuccessReturns;
76
77 fn decode_returns(data: &[Bytes]) -> Result<Self::SuccessReturns>;
81
82 fn decode_return_results(results: &[MulticallResult]) -> Result<Self::Returns>;
84
85 fn try_into_success(results: Self::Returns) -> Result<Self::SuccessReturns>;
87}
88
89#[derive(Debug, Clone)]
91pub struct Empty;
92
93impl Sealed for Empty {}
94
95impl<T: SolCall> TuplePush<T> for Empty {
96 type Pushed = (T,);
97}
98
99impl CallTuple for Empty {
100 type Returns = ();
101 type SuccessReturns = ();
102 fn decode_returns(_: &[Bytes]) -> Result<Self::SuccessReturns> {
103 Ok(())
104 }
105 fn decode_return_results(_results: &[MulticallResult]) -> Result<Self::Returns> {
106 Ok(())
107 }
108 fn try_into_success(_: Self::Returns) -> Result<Self::SuccessReturns> {
109 Ok(())
110 }
111}
112
113impl<D: SolCall> Sealed for Dynamic<D> {}
114
115macro_rules! impl_tuple {
117 ($($idx:tt => $ty:ident),+) => {
118 impl<$($ty: SolCall,)+> Sealed for ($($ty,)+) {}
119
120 impl<T: SolCall, $($ty: SolCall,)+> TuplePush<T> for ($($ty,)+) {
122 type Pushed = ($($ty,)+ T,);
123 }
124
125 impl<$($ty: SolCall,)+> CallTuple for ($($ty,)+) {
127 type Returns = ($(Result<$ty::Return, Failure>,)+);
129
130 type SuccessReturns = ($($ty::Return,)+);
131
132 fn decode_returns(data: &[Bytes]) -> Result<Self::SuccessReturns> {
133 if data.len() != count!($($ty),+) {
134 return Err(MulticallError::NoReturnData);
135 }
136
137 Ok(($($ty::abi_decode_returns(&data[$idx]).map_err(MulticallError::DecodeError)?,)+))
139 }
140
141 fn decode_return_results(results: &[MulticallResult]) -> Result<Self::Returns> {
142 if results.len() != count!($($ty),+) {
143 return Err(MulticallError::NoReturnData);
144 }
145
146 Ok(($(
147 match &results[$idx].success {
148 true => $ty::abi_decode_returns(&results[$idx].returnData)
149 .or_else(|_| Err(Failure { idx: $idx, return_data: results[$idx].returnData.clone() })),
150 false => Err(Failure { idx: $idx, return_data: results[$idx].returnData.clone() }),
151 },
152 )+))
153 }
154
155 fn try_into_success(results: Self::Returns) -> Result<Self::SuccessReturns> {
156 Ok(($(
157 match results.$idx {
158 Ok(value) => value,
159 Err(failure) => return Err(MulticallError::CallFailed(failure.return_data)),
160 },
161 )+))
162 }
163 }
164 };
165}
166
167macro_rules! count {
169 () => (0);
170 ($x:tt $(,$xs:tt)*) => (1 + count!($($xs),*));
171}
172
173impl_tuple!(0 => T1);
175impl_tuple!(0 => T1, 1 => T2);
176impl_tuple!(0 => T1, 1 => T2, 2 => T3);
177impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4);
178impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5);
179impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6);
180impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7);
181impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8);
182impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9);
183impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10);
184impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11);
185impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12);
186impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13);
187impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14);
188impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15);
189impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16);
190impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17);
191impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18);
192impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19);
193impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20);
194impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21);
195impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22);
196impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23);
197impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24);
198
199#[cfg(feature = "more-tuple-impls")]
200macro_rules! block {
201 ($($block:tt)*) => {
202 $($block)*
203 };
204}
205
206#[cfg(feature = "more-tuple-impls")]
207block! {
208 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25);
209 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26);
210 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27);
211 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28);
212 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29);
213 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30);
214 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31);
215 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32);
216 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33);
217 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34);
218 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35);
219 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36);
220 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37);
221 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38);
222 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39);
223 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40);
224 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41);
225 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42);
226 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43);
227 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44);
228 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45);
229 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46);
230 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47);
231 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48);
232 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49);
233 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50);
234 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51);
235 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52);
236 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53);
237 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54);
238 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55);
239 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55, 55 => T56);
240 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55, 55 => T56, 56 => T57);
241 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55, 55 => T56, 56 => T57, 57 => T58);
242 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55, 55 => T56, 56 => T57, 57 => T58, 58 => T59);
243 impl_tuple!(0 => T1, 1 => T2, 2 => T3, 3 => T4, 4 => T5, 5 => T6, 6 => T7, 7 => T8, 8 => T9, 9 => T10, 10 => T11, 11 => T12, 12 => T13, 13 => T14, 14 => T15, 15 => T16, 16 => T17, 17 => T18, 18 => T19, 19 => T20, 20 => T21, 21 => T22, 22 => T23, 23 => T24, 24 => T25, 25 => T26, 26 => T27, 27 => T28, 28 => T29, 29 => T30, 30 => T31, 31 => T32, 32 => T33, 33 => T34, 34 => T35, 35 => T36, 36 => T37, 37 => T38, 38 => T39, 39 => T40, 40 => T41, 41 => T42, 42 => T43, 43 => T44, 44 => T45, 45 => T46, 46 => T47, 47 => T48, 48 => T49, 49 => T50, 50 => T51, 51 => T52, 52 => T53, 53 => T54, 54 => T55, 55 => T56, 56 => T57, 57 => T58, 58 => T59, 59 => T60);
244}