1use std::collections::HashMap;
2use std::hash::Hash;
3
4#[derive(Debug, Clone)]
5pub struct MapTool;
6
7impl MapTool {
8 pub fn new() -> Self { Self }
9
10 pub fn merge<K: Eq + Hash + Clone, V: Clone>(&self, a: &HashMap<K, V>, b: &HashMap<K, V>) -> HashMap<K, V> {
11 let mut res = a.clone();
12 for (k, v) in b {
13 res.insert(k.clone(), v.clone());
14 }
15 res
16 }
17
18 pub fn flip<K: Clone, V: Eq + Hash + Clone>(&self, map: &HashMap<K, V>) -> HashMap<V, K> {
19 let mut res = HashMap::new();
20 for (k, v) in map {
21 res.insert(v.clone(), k.clone());
22 }
23 res
24 }
25}
26
27impl Default for MapTool {
28 fn default() -> Self { Self::new() }
29}