snarkvm_ledger_store::helpers::memory::internal

Struct MemoryMap

Source
pub struct MemoryMap<K: Copy + Clone + PartialEq + Eq + Hash + Serialize + for<'de> Deserialize<'de> + Send + Sync, V: Clone + PartialEq + Eq + Serialize + for<'de> Deserialize<'de> + Send + Sync> { /* private fields */ }

Trait Implementations§

Source§

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

Source§

fn clone(&self) -> MemoryMap<K, V>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

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

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

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

Source§

type Target = Arc<RwLock<RawRwLock, BTreeMap<Vec<u8>, V>>>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

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

Source§

fn from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self

Initializes a new MemoryMap from the given iterator.

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>

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 and 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.

Source§

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

Once called, the subsequent atomic write batches will be queued instead of being executed at the end of their scope. unpause_atomic_writes needs to be called in order to restore the usual behavior.

Source§

fn unpause_atomic_writes<const DISCARD_BATCH: bool>(&self) -> Result<()>

Executes all of the queued writes as a single atomic operation and restores the usual behavior of atomic write batches that was altered by calling pause_atomic_writes.

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> MapRead<'a, K, V> for MemoryMap<K, V>

Source§

fn len_confirmed(&self) -> usize

Returns the number of confirmed entries in the map.

Source§

fn contains_key_confirmed<Q>(&self, key: &Q) -> Result<bool>
where K: Borrow<Q>, Q: PartialEq + Eq + Hash + Serialize + ?Sized,

Returns true if the given key exists in the map.

Source§

fn contains_key_speculative<Q>(&self, key: &Q) -> Result<bool>
where K: Borrow<Q>, Q: PartialEq + Eq + Hash + Serialize + ?Sized,

Returns true if the given key exists in the map. This method first checks the atomic batch, and if it does not exist, then checks the map.

Source§

fn get_confirmed<Q>(&'a self, key: &Q) -> Result<Option<Cow<'a, V>>>
where K: Borrow<Q>, Q: PartialEq + Eq + Hash + Serialize + ?Sized,

Returns the value for the given key from the map, if it exists.

Source§

fn get_pending<Q>(&self, key: &Q) -> Option<Option<V>>
where K: Borrow<Q>, Q: PartialEq + Eq + Hash + Serialize + ?Sized,

Returns the current value for the given key if it is scheduled to be inserted as part of an atomic batch.

If the key does not exist, returns None. If the key is removed in the batch, returns Some(None). If the key is inserted in the batch, returns Some(Some(value)).

Source§

fn iter_pending(&'a self) -> Self::PendingIterator

Returns an iterator visiting each key-value pair in the atomic batch.

Source§

fn iter_confirmed(&'a self) -> Self::Iterator

Returns an iterator visiting each key-value pair in the map.

Source§

fn keys_confirmed(&'a self) -> Self::Keys

Returns an iterator over each key in the map.

Source§

fn values_confirmed(&'a self) -> Self::Values

Returns an iterator over each value in the map.

Source§

type Iterator = Map<IntoIter<Vec<u8>, V>, fn(_: (Vec<u8>, V)) -> (Cow<'a, K>, Cow<'a, V>)>

Source§

type Keys = Map<IntoKeys<Vec<u8>, V>, fn(_: Vec<u8>) -> Cow<'a, K>>

Source§

type PendingIterator = Map<IntoIter<K, Option<V>>, fn(_: (K, Option<V>)) -> (Cow<'a, K>, Option<Cow<'a, V>>)>

Source§

type Values = Map<IntoValues<Vec<u8>, V>, fn(_: V) -> Cow<'a, V>>

Source§

fn is_empty_confirmed(&self) -> bool

Checks whether there are any confirmed entries in the map.
Source§

fn get_speculative<Q>(&'a self, key: &Q) -> Result<Option<Cow<'a, V>>>
where K: Borrow<Q>, Q: PartialEq + Eq + Hash + Serialize + ?Sized,

Returns the value for the given key from the atomic batch first, if it exists, or return from the map, otherwise.

Auto Trait Implementations§

§

impl<K, V> Freeze for MemoryMap<K, V>

§

impl<K, V> !RefUnwindSafe for MemoryMap<K, V>

§

impl<K, V> Send for MemoryMap<K, V>

§

impl<K, V> Sync for MemoryMap<K, V>

§

impl<K, V> Unpin for MemoryMap<K, V>

§

impl<K, V> !UnwindSafe for MemoryMap<K, V>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V