pub struct NodeCache<T, C: CacheType<T> = GlobalCache> {
pub map: C::UnderlyingMap,
pub keys: (u64, u64),
}
Expand description
A node cache
Fields§
§map: C::UnderlyingMap
The underlying map of this
keys: (u64, u64)
The keys of this node cache, for constructing AHasher
instances
Implementations§
Source§impl<T> NodeCache<T, GlobalCache>
impl<T> NodeCache<T, GlobalCache>
Sourcepub fn with_keys(keys: (u64, u64)) -> NodeCache<T>
pub fn with_keys(keys: (u64, u64)) -> NodeCache<T>
Create a new, empty node cache with the given keys
Sourcepub fn cached_entry<'a, K>(
&'a self,
key: &K,
) -> Either<Node<T>, CacheEntry<'a, T>>where
K: Hash,
pub fn cached_entry<'a, K>(
&'a self,
key: &K,
) -> Either<Node<T>, CacheEntry<'a, T>>where
K: Hash,
Get either the cached value for a key (if it exists), or the entry for the key (if it does not). Note that this locks the bucket for the key up until the handle for the entry is destroyed, so be careful!
Sourcepub fn cached_constructor<D, E, F>(
&self,
data: D,
constructor: F,
) -> Result<Node<T>, E>
pub fn cached_constructor<D, E, F>( &self, data: D, constructor: F, ) -> Result<Node<T>, E>
Try to get the node cached for a given key, with a given node creation function. If the node has been collected or otherwise does not exist, try to create a new one and cache it. If this fails, return an error.
Sourcepub fn remove<K>(&self, key: &K) -> Option<(u64, WeakNode<T>)>where
K: Hash,
pub fn remove<K>(&self, key: &K) -> Option<(u64, WeakNode<T>)>where
K: Hash,
Remove a given cached value
Sourcepub fn cached_desc<D>(&self, desc: D) -> Result<Node<T>, T::CacheError>
pub fn cached_desc<D>(&self, desc: D) -> Result<Node<T>, T::CacheError>
Try to get the node cached for a given descriptor. If the node has been collected or otherwise does not exist, try to create a new one and cache it. If this fails, return an error.
Trait Implementations§
Auto Trait Implementations§
impl<T, C> Freeze for NodeCache<T, C>
impl<T, C> RefUnwindSafe for NodeCache<T, C>
impl<T, C> Send for NodeCache<T, C>
impl<T, C> Sync for NodeCache<T, C>
impl<T, C> Unpin for NodeCache<T, C>
impl<T, C> UnwindSafe for NodeCache<T, C>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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