pub struct HashTrie<K, V>{ /* private fields */ }
Expand description
A concurrently readable map based on a modified Trie.
This is a concurrently readable structure, meaning it has transactional properties. Writers are serialised (one after the other), and readers can exist in parallel with stable views of the structure at a point in time.
This is achieved through the use of COW or MVCC. As a write occurs subsets of the tree are cloned into the writer thread and then committed later. This may cause memory usage to increase in exchange for a gain in concurrent behaviour.
Transactions can be rolled-back (aborted) without penalty by dropping
the HashTrieWriteTxn
without calling commit()
.
Implementations§
source§impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashTrie<K, V>
impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashTrie<K, V>
sourcepub fn read(&self) -> HashTrieReadTxn<'_, K, V>
pub fn read(&self) -> HashTrieReadTxn<'_, K, V>
Initiate a read transaction for the Hashmap, concurrent to any other readers or writers.
sourcepub fn write(&self) -> HashTrieWriteTxn<'_, K, V>
pub fn write(&self) -> HashTrieWriteTxn<'_, K, V>
Initiate a write transaction for the map, exclusive to this writer, and concurrently to all existing reads.
sourcepub fn try_write(&self) -> Option<HashTrieWriteTxn<'_, K, V>>
pub fn try_write(&self) -> Option<HashTrieWriteTxn<'_, K, V>>
Attempt to create a new write, returns None if another writer already exists.