stable_map/
from.rs

1#[cfg(test)]
2mod tests;
3
4use {
5    crate::StableMap,
6    core::hash::{BuildHasher, Hash},
7    hashbrown::HashMap,
8};
9
10impl<K, V, S, const N: usize> From<[(K, V); N]> for StableMap<K, V, S>
11where
12    K: Eq + Hash,
13    S: BuildHasher + Default,
14{
15    fn from(value: [(K, V); N]) -> Self {
16        let mut map = Self::with_capacity_and_hasher(N, S::default());
17        for (k, v) in value {
18            map.insert(k, v);
19        }
20        map
21    }
22}
23
24impl<K, V, S> From<HashMap<K, V, S>> for StableMap<K, V, S>
25where
26    K: Eq + Hash,
27    S: BuildHasher + Clone,
28{
29    fn from(value: HashMap<K, V, S>) -> Self {
30        let mut map = Self::with_capacity_and_hasher(value.len(), value.hasher().clone());
31        for (k, v) in value {
32            map.insert(k, v);
33        }
34        map
35    }
36}
37
38impl<K, V, S> From<StableMap<K, V, S>> for HashMap<K, V, S>
39where
40    K: Eq + Hash,
41    S: BuildHasher + Clone,
42{
43    fn from(value: StableMap<K, V, S>) -> Self {
44        let mut map = Self::with_capacity_and_hasher(value.len(), value.hasher().clone());
45        for (k, v) in value {
46            map.insert(k, v);
47        }
48        map
49    }
50}