Skip to main content

teaql_tool_std/
map.rs

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}