pub struct HashMap<K, V>{ /* private fields */ }Expand description
A concurrently readable map based on a modified B+Tree structured with fast parallel hashed key lookup.
This structure can be used in locations where you would otherwise us
RwLock<HashMap> or Mutex<HashMap>.
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 HashMapWriteTxn without calling commit().
Implementations§
Source§impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashMap<K, V>
impl<K: Hash + Eq + Clone + Debug + Sync + Send + 'static, V: Clone + Sync + Send + 'static> HashMap<K, V>
Sourcepub fn read(&self) -> HashMapReadTxn<'_, K, V>
pub fn read(&self) -> HashMapReadTxn<'_, K, V>
Initiate a read transaction for the Hashmap, concurrent to any other readers or writers.
Sourcepub fn write(&self) -> HashMapWriteTxn<'_, K, V>
pub fn write(&self) -> HashMapWriteTxn<'_, 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<HashMapWriteTxn<'_, K, V>>
pub fn try_write(&self) -> Option<HashMapWriteTxn<'_, K, V>>
Attempt to create a new write, returns None if another writer already exists.