pub struct VALUE_CACHE { /* private fields */ }Expand description
A lazily-initialized global cache for rain values, for hash-consing
Methods from Deref<Target = ValueCache>§
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§
Source§impl Deref for VALUE_CACHE
impl Deref for VALUE_CACHE
impl LazyStatic for VALUE_CACHE
Auto Trait Implementations§
impl Freeze for VALUE_CACHE
impl RefUnwindSafe for VALUE_CACHE
impl Send for VALUE_CACHE
impl Sync for VALUE_CACHE
impl Unpin for VALUE_CACHE
impl UnwindSafe for VALUE_CACHE
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
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>
Converts
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>
Converts
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