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    #[must_use]
23    pub const fn new() -> Self {
24        Self
25    }
26}
27
28#[async_trait::async_trait]
29impl<K, V> StorageBackend<K, V> for InMemoryBackend
30where
31    K: Eq + Hash + Clone + Serialize + DeserializeOwned + Send + Sync + 'static,
32    V: Clone + Serialize + DeserializeOwned + Send + Sync + 'static,
33{
34    async fn load_all(&self) -> Result<HashMap<K, V>, PersistentError> {
35        Ok(HashMap::new())
36    }
37
38    async fn save(&self, _key: K, _value: V) -> Result<(), PersistentError> {
39        Ok(())
40    }
41
42    async fn delete(&self, _key: &K) -> Result<(), PersistentError> {
43        Ok(())
44    }
45}