haar_lib/macros/
ds_macros.rs

1//! `hashset!`, `btreeset!`, `hashmap!`, `btreemap!`
2
3/// 引数から[`std::collections::HashSet`]を作る。
4#[macro_export]
5macro_rules! hashset {
6    ($($a:expr),*) => {{
7        let mut a = std::collections::HashSet::new();
8        a.extend(vec![$($a),*]);
9        a
10    }}
11}
12
13/// 引数から[`std::collections::BTreeSet`]を作る。
14#[macro_export]
15macro_rules! btreeset {
16    ($($a:expr),*) => {{
17        let mut a = std::collections::BTreeSet::new();
18        a.extend(vec![$($a),*]);
19        a
20    }}
21}
22
23/// 引数から[`std::collections::HashMap`]を作る。
24#[macro_export]
25macro_rules! hashmap {
26    ($($key:expr => $val:expr),*) => {{
27        let mut a = std::collections::HashMap::new();
28        a.extend(vec![$(($key, $val)),*]);
29        a
30    }}
31}
32
33/// 引数から[`std::collections::BTreeMap`]を作る。
34#[macro_export]
35macro_rules! btreemap {
36    ($($key:expr => $val:expr),*) => {{
37        let mut a = std::collections::BTreeMap::new();
38        a.extend(vec![$(($key, $val)),*]);
39        a
40    }}
41}
42
43#[cfg(test)]
44mod tests {
45    #[test]
46    fn test() {
47        dbg!(hashset!(1, 2, 3, 3, 4));
48        dbg!(btreeset!(1, 2, 3, 3, 4));
49        dbg!(hashmap!(1 => "a", 2 => "b", 3 => "c", 3 => "d", 4 => "e"));
50        dbg!(btreemap!(1 => "a", 2 => "b", 3 => "c", 3 => "d", 4 => "e"));
51    }
52}