persistent_map/backends/
in_memory.rs

1use crate::StorageBackend;
2use crate::{PersistentError, Result};
3use serde::{de::DeserializeOwned, Serialize};
4use std::{collections::HashMap, hash::Hash};
5
6/// An in-memory backend that doesn't persist data.
7///
8/// This backend is useful for testing or when persistence is not needed.
9#[derive(Debug, Default)]
10pub struct InMemoryBackend;
11
12impl InMemoryBackend {
13    /// Creates a new in-memory backend.
14    ///
15    /// # Examples
16    ///
17    /// ```rust
18    /// use persistent_map::in_memory::InMemoryBackend;
19    ///
20    /// let backend = InMemoryBackend::new();
21    /// ```
22    pub fn new() -> Self {
23        InMemoryBackend
24    }
25}
26
27#[async_trait::async_trait]
28impl<K, V> StorageBackend<K, V> for InMemoryBackend
29where
30    K: Eq + Hash + Clone + Serialize + DeserializeOwned + Send + Sync + 'static,
31    V: Clone + Serialize + DeserializeOwned + Send + Sync + 'static,
32{
33    async fn load_all(&self) -> Result<HashMap<K, V>, PersistentError> {
34        Ok(HashMap::new())
35    }
36
37    async fn save(&self, _key: K, _value: V) -> Result<(), PersistentError> {
38        Ok(())
39    }
40
41    async fn delete(&self, _key: &K) -> Result<(), PersistentError> {
42        Ok(())
43    }
44}