fluxus_runtime/
state.rs

1use parking_lot::RwLock;
2use std::collections::HashMap;
3use std::hash::Hash;
4use std::sync::Arc;
5
6/// Simple key-value state backend
7#[derive(Default)]
8pub struct KeyedStateBackend<K, V> {
9    state: Arc<RwLock<HashMap<K, V>>>,
10}
11
12impl<K, V> KeyedStateBackend<K, V>
13where
14    K: Eq + Hash,
15{
16    pub fn new() -> Self {
17        Self {
18            state: Arc::new(RwLock::new(HashMap::new())),
19        }
20    }
21
22    pub fn get(&self, key: &K) -> Option<V>
23    where
24        V: Clone,
25    {
26        self.state.read().get(key).cloned()
27    }
28
29    pub fn set(&self, key: K, value: V) {
30        self.state.write().insert(key, value);
31    }
32}