iterator_to_hash_map/
lib.rs

1use std::collections::HashMap;
2use std::hash::Hash;
3
4pub trait ToHashMap<T,K,V, FK, FV>
5    where K:Hash,
6          K:Eq,
7          FK:Fn(&T)->K,
8          FV:Fn(&T)->V {
9
10    fn to_hash_map(self, key_func: FK, value_func: FV) -> HashMap<K, V>;
11}
12
13impl<T, K, V, FK, FV, I> ToHashMap<T, K, V, FK, FV> for I
14    where K: Hash,
15          K: Eq,
16          FK: Fn(&T) -> K,
17          FV: Fn(&T) -> V,
18          I: IntoIterator<Item = T>
19{
20    fn to_hash_map(self, key_func: FK, value_func: FV) -> HashMap<K, V> {
21        let mut hm: HashMap<K, V> = HashMap::new();
22        for x in self {
23            hm.insert(key_func(&x), value_func(&x));
24        }
25        hm
26    }
27}