1#[macro_export]
2macro_rules! map {
3 (@single $($x:tt)*) => (());
4 (@count $($rest:expr_2021),*) => (<[()]>::len(&[$($crate::map!(@single $rest)),*]));
5
6 ($($key:expr_2021 => $value:expr_2021,)+) => { $crate::map!($($key => $value),+) };
7 ($($key:expr_2021 => $value:expr_2021),*) => {
8 {
9 let _cap = $crate::map!(@count $($key),*);
10 let mut _map = $crate::Map::with_capacity(_cap);
11 $(
12 let _ = _map.insert($crate::Key::from($key), $crate::Value::from($value));
13 )*
14 _map
15 }
16 };
17}
18
19#[macro_export]
20macro_rules! array {
21 (@single $($x:tt)*) => (());
22 (@count $($rest:expr_2021),*) => (<[()]>::len(&[$($crate::array!(@single $rest)),*]));
23
24 ($($value:expr_2021,)+) => { $crate::array!($($value),+) };
25 ($($value:expr_2021),*) => {
26 {
27 let _cap = $crate::array!(@count $($value),*);
28 let mut _vec = ::std::vec::Vec::<$crate::Value>::with_capacity(_cap);
29 $(
30 _vec.push($crate::Value::from($value));
31 )*
32 _vec
33 }
34 };
35}