1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use crate::storage::{StorageEngine, StorageError, StorageResult}; use std::collections::HashMap; #[derive(Default, Clone)] pub struct MapStorageEngine { pub map: HashMap<String, Vec<u8>>, } impl MapStorageEngine { pub fn new(map: HashMap<String, Vec<u8>>) -> Self { Self { map } } } impl StorageEngine for MapStorageEngine { fn load(&mut self, path: &str) -> StorageResult<Vec<u8>> { if let Some(bytes) = self.map.get(path) { Ok(bytes.to_vec()) } else { Err(StorageError::CouldNotLoadData(path.to_owned())) } } fn store(&mut self, path: &str, data: &[u8]) -> StorageResult<()> { self.map.insert(path.to_owned(), data.to_vec()); Ok(()) } }