pub trait Map<'a, K: 'a + Copy + Clone + PartialEq + Eq + Hash + Serialize + Deserialize<'a> + Send + Sync, V: 'a + Clone + PartialEq + Eq + Serialize + Deserialize<'a> + Send + Sync>: Clone + MapRead<'a, K, V> + Send + Sync {
    // Required methods
    fn insert(&self, key: K, value: V) -> Result<()>;
    fn remove(&self, key: &K) -> Result<()>;
    fn start_atomic(&self);
    fn is_atomic_in_progress(&self) -> bool;
    fn atomic_checkpoint(&self);
    fn clear_latest_checkpoint(&self);
    fn atomic_rewind(&self);
    fn abort_atomic(&self);
    fn finish_atomic(&self) -> Result<()>;
}
Expand description

A trait representing map-like storage operations with read-write capabilities.

Required Methods§

source

fn insert(&self, key: K, value: V) -> Result<()>

Inserts the given key-value pair into the map.

source

fn remove(&self, key: &K) -> Result<()>

Removes the key-value pair for the given key from the map.

source

fn start_atomic(&self)

Begins an atomic operation. Any further calls to insert and remove will be queued without an actual write taking place until finish_atomic is called.

source

fn is_atomic_in_progress(&self) -> bool

Checks whether an atomic operation is currently in progress. This can be done to ensure that lower-level operations don’t start or finish their individual atomic write batch if they are already part of a larger one.

source

fn atomic_checkpoint(&self)

Saves the current list of pending operations, so that if atomic_rewind is called, we roll back all future operations, and return to the start of this checkpoint.

source

fn clear_latest_checkpoint(&self)

Removes the latest atomic checkpoint.

source

fn atomic_rewind(&self)

Removes all pending operations to the last atomic_checkpoint (or to start_atomic if no checkpoints have been created).

source

fn abort_atomic(&self)

Aborts the current atomic operation.

source

fn finish_atomic(&self) -> Result<()>

Finishes an atomic operation, performing all the queued writes.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a, K: 'a + Copy + Clone + PartialEq + Eq + Hash + Serialize + for<'de> Deserialize<'de> + Send + Sync, V: 'a + Clone + PartialEq + Eq + Serialize + for<'de> Deserialize<'de> + Send + Sync> Map<'a, K, V> for MemoryMap<K, V>