surfpool_core/storage/
hash_map.rs1pub use std::collections::HashMap;
2use std::hash::Hash;
3
4use serde::{Deserialize, Serialize};
5
6impl<K, V> super::Storage<K, V> for HashMap<K, V>
7where
8 K: Serialize + for<'de> Deserialize<'de> + Clone + Send + Sync + 'static + std::cmp::Eq + Hash,
9 V: Serialize + for<'de> Deserialize<'de> + Clone + Send + Sync + 'static,
10{
11 fn store(&mut self, key: K, value: V) -> super::StorageResult<()> {
12 self.insert(key, value);
13 Ok(())
14 }
15
16 fn clear(&mut self) -> super::StorageResult<()> {
17 self.clear();
18 Ok(())
19 }
20
21 fn get(&self, key: &K) -> super::StorageResult<Option<V>> {
22 Ok(self.get(key).cloned())
23 }
24
25 fn take(&mut self, key: &K) -> super::StorageResult<Option<V>> {
26 Ok(self.remove(key))
27 }
28
29 fn keys(&self) -> super::StorageResult<Vec<K>> {
30 Ok(self.keys().cloned().collect())
31 }
32
33 fn into_iter(&self) -> super::StorageResult<Box<dyn Iterator<Item = (K, V)> + '_>> {
34 Ok(Box::new(self.clone().into_iter()))
35 }
36
37 fn clone_box(&self) -> Box<dyn super::Storage<K, V>> {
38 Box::new(self.clone())
39 }
40
41 fn contains_key(&self, key: &K) -> super::StorageResult<bool> {
42 Ok(self.contains_key(key))
43 }
44
45 fn count(&self) -> super::StorageResult<u64> {
46 Ok(self.len() as u64)
47 }
48}