snarkvm_ledger_store::helpers

Trait NestedMap

Source
pub trait NestedMap<'a, M: 'a + Copy + Clone + PartialEq + Eq + Hash + Serialize + Deserialize<'a> + Send + Sync, K: 'a + Clone + PartialEq + Eq + Serialize + Deserialize<'a> + Send + Sync, V: 'a + Clone + PartialEq + Eq + Serialize + Deserialize<'a> + Send + Sync>:
    Clone
    + NestedMapRead<'a, M, K, V>
    + Send
    + Sync {
    // Required methods
    fn insert(&self, map: M, key: K, value: V) -> Result<()>;
    fn remove_map(&self, map: &M) -> Result<()>;
    fn remove_key(&self, map: &M, 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 ‘nested map’-like storage operations with read-write capabilities.

Required Methods§

Source

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

Inserts the given key-value pair.

Source

fn remove_map(&self, map: &M) -> Result<()>

Removes the given map.

Source

fn remove_key(&self, map: &M, key: &K) -> Result<()>

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

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

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