vec_collections/
macros.rs1#[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_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}