Struct concread::hashmap::HashMapWriteTxn

source ·
pub struct HashMapWriteTxn<'a, K, V>
where K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static,
{ /* private fields */ }
Expand description

An active write transaction for a HashMap. The data in this tree may be modified exclusively through this transaction without affecting readers. The write may be rolledback/aborted by dropping this guard without calling commit(). Once commit() is called, readers will be able to access and percieve changes in new transactions.

Implementations§

source§

impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashMapWriteTxn<'_, K, V>

source

pub fn get<Q>(&self, k: &Q) -> Option<&V>
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Retrieve a value from the map. If the value exists, a reference is returned as Some(&V), otherwise if not present None is returned.

source

pub fn contains_key<Q>(&self, k: &Q) -> bool
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Assert if a key exists in the map.

source

pub fn len(&self) -> usize

returns the current number of k:v pairs in the tree

source

pub fn is_empty(&self) -> bool

Determine if the set is currently empty

source

pub fn iter(&self) -> Iter<'_, K, V>

Iterator over (&K, &V) of the set

source

pub fn values(&self) -> ValueIter<'_, K, V>

Iterator over &K

source

pub fn keys(&self) -> KeyIter<'_, K, V>

Iterator over &V

source

pub fn clear(&mut self)

Reset this map to an empty state. As this is within the transaction this change only takes effect once commited. Once cleared, you can begin adding new writes and changes, again, that will only be visible once commited.

source

pub fn insert(&mut self, k: K, v: V) -> Option<V>

Insert or update a value by key. If the value previously existed it is returned as Some(V). If the value did not previously exist this returns None.

source

pub fn remove(&mut self, k: &K) -> Option<V>

Remove a key if it exists in the tree. If the value exists, we return it as Some(V), and if it did not exist, we return None

source

pub fn get_mut(&mut self, k: &K) -> Option<&mut V>

Get a mutable reference to a value in the tree. This is correctly, and safely cloned before you attempt to mutate the value, isolating it from other transactions.

source

pub fn to_snapshot(&self) -> HashMapReadSnapshot<'_, K, V>

Create a read-snapshot of the current map. This does NOT guarantee the map may not be mutated during the read, so you MUST guarantee that no functions of the write txn are called while this snapshot is active.

source§

impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashMapWriteTxn<'_, K, V>

source

pub fn commit(self)

Commit the changes from this write transaction. Readers after this point will be able to percieve these changes.

To abort (unstage changes), just do not call this function.

Trait Implementations§

source§

impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> Extend<(K, V)> for HashMapWriteTxn<'_, K, V>

source§

fn extend<I: IntoIterator<Item = (K, V)>>(&mut self, iter: I)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more

Auto Trait Implementations§

§

impl<'a, K, V> Freeze for HashMapWriteTxn<'a, K, V>

§

impl<'a, K, V> RefUnwindSafe for HashMapWriteTxn<'a, K, V>

§

impl<'a, K, V> !Send for HashMapWriteTxn<'a, K, V>

§

impl<'a, K, V> Sync for HashMapWriteTxn<'a, K, V>

§

impl<'a, K, V> Unpin for HashMapWriteTxn<'a, K, V>

§

impl<'a, K, V> UnwindSafe for HashMapWriteTxn<'a, 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

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<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more