pub struct InMemoryStore { /* private fields */ }Expand description
In-process, heap-backed implementation of StateStore.
Suitable for testing and single-process use. Backed by a Mutex<HashMap>
wrapped in Arc so it is cheaply cloneable across tasks.
§Example
use xenith_core::{InMemoryStore, StateStore, StateKey, StateValue, StateVersion, ChainId};
use bytes::Bytes;
let store = InMemoryStore::default();
let key = StateKey::new("proto", "pool", "0x1");
let val = StateValue {
data: Bytes::new(),
version: StateVersion { timestamp_ms: 1, sequence: 0, source_chain: 1 },
updated_at: 0,
source_chain: ChainId::from(1),
};
store.set(&key, val.clone()).await.unwrap();
assert_eq!(store.get(&key).await.unwrap(), Some(val));Trait Implementations§
Source§impl Clone for InMemoryStore
impl Clone for InMemoryStore
Source§fn clone(&self) -> InMemoryStore
fn clone(&self) -> InMemoryStore
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Default for InMemoryStore
impl Default for InMemoryStore
Source§fn default() -> InMemoryStore
fn default() -> InMemoryStore
Returns the “default value” for a type. Read more
Source§impl StateStore for InMemoryStore
impl StateStore for InMemoryStore
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<Option<StateValue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<Option<StateValue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieve the value for
key, or None if it has not been set.Source§fn set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
value: StateValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
value: StateValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert or overwrite the value for
key.Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove the value for
key. No-op if the key does not exist.Source§fn list_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return all keys whose string representation starts with
prefix.Source§fn get_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<Option<KeyMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
) -> Pin<Box<dyn Future<Output = Result<Option<KeyMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn set_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
meta: KeyMetadata,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 StateKey,
meta: KeyMetadata,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Store
KeyMetadata for key.Auto Trait Implementations§
impl Freeze for InMemoryStore
impl RefUnwindSafe for InMemoryStore
impl Send for InMemoryStore
impl Sync for InMemoryStore
impl Unpin for InMemoryStore
impl UnsafeUnpin for InMemoryStore
impl UnwindSafe for InMemoryStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more