mixed_array/
lib.rs

1mixed_type_proc::mixed_type_proc!();
2
3//create items with the approriate Mixed structs so the generics can be inferred
4#[macro_export]
5macro_rules! mixed_array {
6    () => {
7        []
8    };
9    ($a:expr $(,)?) => {
10        [&a]
11    };
12    ($a:expr, $b:expr $(,)?) => {
13        [$crate::Mixed2::A($a), $crate::Mixed2::B($b)]
14    };
15    ($a:expr, $b:expr, $c:expr $(,)?) => {
16        [
17            $crate::Mixed3::A($a),
18            $crate::Mixed3::B($b),
19            $crate::Mixed3::C($c),
20        ]
21    };
22    ($a:expr, $b:expr, $c:expr, $d:expr $(,)?) => {
23        [
24            $crate::Mixed4::A($a),
25            $crate::Mixed4::B($b),
26            $crate::Mixed4::C($c),
27            $crate::Mixed4::D($d),
28        ]
29    };
30    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr $(,)?) => {
31        [
32            $crate::Mixed5::A($a),
33            $crate::Mixed5::B($b),
34            $crate::Mixed5::C($c),
35            $crate::Mixed5::D($d),
36            $crate::Mixed5::E($e),
37        ]
38    };
39    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr $(,)?) => {
40        [
41            $crate::Mixed6::A($a),
42            $crate::Mixed6::B($b),
43            $crate::Mixed6::C($c),
44            $crate::Mixed6::D($d),
45            $crate::Mixed6::E($e),
46            $crate::Mixed6::F($f),
47        ]
48    };
49    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr $(,)?) => {
50        [
51            $crate::Mixed7::A($a),
52            $crate::Mixed7::B($b),
53            $crate::Mixed7::C($c),
54            $crate::Mixed7::D($d),
55            $crate::Mixed7::E($e),
56            $crate::Mixed7::F($f),
57            $crate::Mixed7::G($g),
58        ]
59    };
60    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $h:expr $(,)?) => {
61        [
62            $crate::Mixed8::A($a),
63            $crate::Mixed8::B($b),
64            $crate::Mixed8::C($c),
65            $crate::Mixed8::D($d),
66            $crate::Mixed8::E($e),
67            $crate::Mixed8::F($f),
68            $crate::Mixed8::G($g),
69            $crate::Mixed8::H($h),
70        ]
71    };
72    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $h:expr, $i:expr $(,)?) => {
73        [
74            $crate::Mixed9::A($a),
75            $crate::Mixed9::B($b),
76            $crate::Mixed9::C($c),
77            $crate::Mixed9::D($d),
78            $crate::Mixed9::E($e),
79            $crate::Mixed9::F($f),
80            $crate::Mixed9::G($g),
81            $crate::Mixed9::H($h),
82            $crate::Mixed9::I($i),
83        ]
84    };
85    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $h:expr, $i:expr, $j:expr $(,)?) => {
86        [
87            $crate::Mixed10::A($a),
88            $crate::Mixed10::B($b),
89            $crate::Mixed10::C($c),
90            $crate::Mixed10::D($d),
91            $crate::Mixed10::E($e),
92            $crate::Mixed10::F($f),
93            $crate::Mixed10::G($g),
94            $crate::Mixed10::H($h),
95            $crate::Mixed10::I($i),
96            $crate::Mixed10::J($j),
97        ]
98    };
99    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $h:expr, $i:expr, $j:expr, $k:expr $(,)?) => {
100        [
101            $crate::Mixed11::A($a),
102            $crate::Mixed11::B($b),
103            $crate::Mixed11::C($c),
104            $crate::Mixed11::D($d),
105            $crate::Mixed11::E($e),
106            $crate::Mixed11::F($f),
107            $crate::Mixed11::G($g),
108            $crate::Mixed11::H($h),
109            $crate::Mixed11::I($i),
110            $crate::Mixed11::J($j),
111            $crate::Mixed11::K($k),
112        ]
113    };
114    ($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $h:expr, $i:expr, $j:expr, $k:expr, $l:expr $(,)?) => {
115        [
116            $crate::Mixed12::A($a),
117            $crate::Mixed12::B($b),
118            $crate::Mixed12::C($c),
119            $crate::Mixed12::D($d),
120            $crate::Mixed12::E($e),
121            $crate::Mixed12::F($f),
122            $crate::Mixed12::G($g),
123            $crate::Mixed12::H($h),
124            $crate::Mixed12::I($i),
125            $crate::Mixed12::J($j),
126            $crate::Mixed12::K($k),
127            $crate::Mixed12::L($l),
128        ]
129    };
130}