vec_collections/
macros.rs

1/// Macro to create a vecset
2#[macro_export]
3macro_rules! vecset {
4    () => ({
5        $crate::VecSet::default()
6    });
7    ($($x:expr),*$(,)*) => ({
8        let mut set = $crate::VecSet::default();
9        $(set.insert($x);)*
10        set
11    });
12}
13
14/// Macro to create a vecmap
15#[macro_export]
16macro_rules! vecmap {
17    ($($key:expr => $value:expr,)+) => { vecmap!($($key => $value),+) };
18    ($($key:expr => $value:expr),*) => {
19        {
20            let mut _map = $crate::VecMap::default();
21            $(
22                let _ = _map.insert($key, $value);
23            )*
24            _map
25        }
26    };
27}
28
29#[cfg(test)]
30mod tests {
31    use crate::{VecMap, VecSet};
32
33    #[test]
34    fn vecset_macro() {
35        let from_macro_empty: VecSet<[u32; 4]> = vecset! {};
36        let from_macro: VecSet<[u32; 4]> = vecset! {1,2,3};
37        let mut manual: VecSet<[u32; 4]> = VecSet::default();
38        assert_eq!(from_macro_empty, manual);
39        manual.insert(1);
40        manual.insert(2);
41        manual.insert(3);
42        assert_eq!(from_macro, manual);
43    }
44
45    #[test]
46    fn vecmap_macro() {
47        let from_macro_empty: VecMap<[(u32, u32); 4]> = vecmap! {};
48        let from_macro: VecMap<[(u32, u32); 4]> = vecmap! {1 => 2, 2 => 4,3 => 6};
49        let mut manual: VecMap<[(u32, u32); 4]> = VecMap::default();
50        assert_eq!(from_macro_empty, manual);
51        manual.insert(1, 2);
52        manual.insert(2, 4);
53        manual.insert(3, 6);
54        assert_eq!(from_macro, manual);
55    }
56}