oxygengine_core/storage/engines/
map.rs

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