1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
#[macro_export] macro_rules! map { ( $( $key:expr => $value:expr ),* ) => { { let mut temp_map = std::collections::HashMap::new(); $( temp_map.insert($key, $value); )* temp_map } }; } #[macro_export] macro_rules! set { ( $( $value:expr ),* ) => { { let mut temp_set = std::collections::HashSet::new(); $( temp_set.insert($value); )* temp_set } }; } #[cfg(test)] mod tests { #[test] fn map_macro() { let mut map = std::collections::HashMap::new(); map.insert(1, "hello"); map.insert(2, "world"); assert_eq!(map!{1 => "hello", 2 => "world"}, map); let mut map = std::collections::HashMap::new(); map.insert(true, String::from("hello")); map.insert(false, String::from("world")); assert_eq!(map!{true => String::from("hello"), false => String::from("world")}, map); } #[test] fn set_macro() { let mut set = std::collections::HashSet::new(); set.insert("hello"); set.insert("world"); assert_eq!(set!{"hello", "world"}, set); let mut set = std::collections::HashSet::new(); set.insert(String::from("hello")); set.insert(String::from("world")); assert_eq!(set!{String::from("hello"), String::from("world")}, set); } }