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}