iterator_to_hash_map/
lib.rs1use 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}