pub struct CHashMap<K, T, S = DefaultHashBuilder> { /* private fields */ }
Implementations§
Source§impl<K, T, S> CHashMap<K, T, S>where
S: Clone,
impl<K, T, S> CHashMap<K, T, S>where
S: Clone,
pub fn with_hasher(num_shards: usize, hash_builder: S) -> Self
Source§impl<K, T, S> CHashMap<K, T, S>
impl<K, T, S> CHashMap<K, T, S>
pub fn hash_builder(&self) -> &S
pub async fn clear(&self)
pub async fn retain<F>(&self, f: F)
pub fn iter_shards<'a>( &'a self, ) -> impl Iterator<Item = &'a RwLock<Shard<K, T, S>>>
pub fn size(&self) -> usize
pub fn num_shards(&self) -> usize
pub fn try_maybe_contains_hash(&self, hash: u64) -> bool
pub async fn contains_hash(&self, hash: u64) -> bool
pub async fn contains<Q>(&self, key: &Q) -> bool
pub async fn remove<Q>(&self, key: &Q) -> Option<T>
pub async fn insert(&self, key: K, value: T) -> Option<T>
pub async fn get<Q>(&self, key: &Q) -> Option<ReadHandle<impl Erased, T>>
pub async fn get_cloned<Q>(&self, key: &Q) -> Option<T>
pub async fn get_mut<Q>(&self, key: &Q) -> Option<WriteHandle<impl Erased, T>>
pub async fn get_or_insert(
&self,
key: &K,
on_insert: impl FnOnce() -> T,
) -> ReadHandle<impl Erased, T>where
K: Clone,
pub async fn get_mut_or_insert(
&self,
key: &K,
on_insert: impl FnOnce() -> T,
) -> WriteHandle<impl Erased, T>where
K: Clone,
pub async fn get_or_default(&self, key: &K) -> ReadHandle<impl Erased, T>
pub async fn get_mut_or_default(&self, key: &K) -> WriteHandle<impl Erased, T>
Sourcepub async fn batch_read<'a, Q, I, F>(
&self,
keys: I,
cache: Option<&mut Vec<(&'a Q, u64, usize)>>,
f: F,
)
pub async fn batch_read<'a, Q, I, F>( &self, keys: I, cache: Option<&mut Vec<(&'a Q, u64, usize)>>, f: F, )
Aggregates all the provided keys and batches together access to the underlying shards, reducing locking overhead at the cost of memory to buffer keys/hashes.
Sourcepub async fn batch_write<'a, Q, I, F>(
&self,
keys: I,
cache: Option<&mut Vec<(&'a Q, u64, usize)>>,
f: F,
)where
K: Borrow<Q>,
Q: Hash + Eq + 'a + ?Sized,
I: IntoIterator<Item = &'a Q>,
F: FnMut(&'a Q, RawEntryMut<'_, K, T, S>),
pub async fn batch_write<'a, Q, I, F>(
&self,
keys: I,
cache: Option<&mut Vec<(&'a Q, u64, usize)>>,
f: F,
)where
K: Borrow<Q>,
Q: Hash + Eq + 'a + ?Sized,
I: IntoIterator<Item = &'a Q>,
F: FnMut(&'a Q, RawEntryMut<'_, K, T, S>),
Aggregates all the provided keys and batches together access to the underlying shards, reducing locking overhead at the cost of memory to buffer keys/hashes
Trait Implementations§
Auto Trait Implementations§
impl<K, T, S = BuildHasherDefault<AHasher>> !Freeze for CHashMap<K, T, S>
impl<K, T, S = BuildHasherDefault<AHasher>> !RefUnwindSafe for CHashMap<K, T, S>
impl<K, T, S> Send for CHashMap<K, T, S>
impl<K, T, S> Sync for CHashMap<K, T, S>
impl<K, T, S> Unpin for CHashMap<K, T, S>where
S: Unpin,
impl<K, T, S = BuildHasherDefault<AHasher>> !UnwindSafe for CHashMap<K, T, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more