soroban_sdk/
constructor_args.rs1use crate::{Env, IntoVal, Val, Vec};
2
3pub trait ConstructorArgs: IntoVal<Env, Vec<Val>> {}
4
5impl<T> ConstructorArgs for Vec<T> {}
6
7macro_rules! impl_constructor_args_for_tuple {
8 ( $($typ:ident $idx:tt)* ) => {
9 impl<$($typ),*> ConstructorArgs for ($($typ,)*)
10 where
11 $($typ: IntoVal<Env, Val>),*
12 {
13 }
14 };
15}
16
17impl ConstructorArgs for () {}
19impl_constructor_args_for_tuple! { T0 0 }
21impl_constructor_args_for_tuple! { T0 0 T1 1 }
22impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 }
23impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 }
24impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 }
25impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 }
26impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 }
27impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 }
28impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 }
29impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 T9 9 }
30impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 T9 9 T10 10 }
31impl_constructor_args_for_tuple! { T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 T9 9 T10 10 T11 11 }
32impl_constructor_args_for_tuple! { T0 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 }