1use crate::{MetaTuple, meta_tuple};
2
3pub trait IntoMetaTuple {
7 fn into_meta_tuple(self) -> impl MetaTuple;
8}
9
10impl<T> IntoMetaTuple for T
11where
12 T: MetaTuple,
13{
14 fn into_meta_tuple(self) -> impl MetaTuple {
15 self
16 }
17}
18
19macro_rules! impl_tuple {
20 ($($T: ident),*) => {
21 #[allow(non_snake_case)]
22 impl<$($T: 'static,)*> IntoMetaTuple for ($($T,)*) {
23 fn into_meta_tuple(self) -> impl MetaTuple {
24 let ($($T,)*) = self;
25 meta_tuple!($($T,)*)
26 }
27 }
28 };
29}
30
31impl_tuple!(A);
32impl_tuple!(A, B);
33impl_tuple!(A, B, C);
34impl_tuple!(A, B, C, D);
35impl_tuple!(A, B, C, D, E);
36impl_tuple!(A, B, C, D, E, F);
37impl_tuple!(A, B, C, D, E, F, G);
38impl_tuple!(A, B, C, D, E, F, G, H);
39impl_tuple!(A, B, C, D, E, F, G, H, I);
40impl_tuple!(A, B, C, D, E, F, G, H, I, J);
41impl_tuple!(A, B, C, D, E, F, G, H, I, J, K);
42impl_tuple!(A, B, C, D, E, F, G, H, I, J, K, L);