cached::stores

Struct ExpiringValueCache

source
pub struct ExpiringValueCache<K: Hash + Eq, V: CanExpire> { /* private fields */ }
Expand description

Expiring Value Cache

Stores values that implement the CanExpire trait so that expiration is determined by the values themselves. This is useful for caching values which themselves contain an expiry timestamp.

Note: This cache is in-memory only.

Implementations§

source§

impl<K: Clone + Hash + Eq, V: CanExpire> ExpiringValueCache<K, V>

source

pub fn with_size(size: usize) -> ExpiringValueCache<K, V>

Creates a new ExpiringValueCache with a given size limit and pre-allocated backing data.

source

pub fn flush(&mut self)

Remove any expired values from the cache

Trait Implementations§

source§

impl<K: Hash + Eq + Clone, V: CanExpire> Cached<K, V> for ExpiringValueCache<K, V>

source§

fn cache_get<Q>(&mut self, k: &Q) -> Option<&V>
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Attempt to retrieve a cached value Read more
source§

fn cache_get_mut<Q>(&mut self, k: &Q) -> Option<&mut V>
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Attempt to retrieve a cached value with mutable access Read more
source§

fn cache_get_or_set_with<F: FnOnce() -> V>(&mut self, k: K, f: F) -> &mut V

Get or insert a key, value pair
source§

fn cache_try_get_or_set_with<F: FnOnce() -> Result<V, E>, E>( &mut self, k: K, f: F, ) -> Result<&mut V, E>

Get or insert a key, value pair with error handling
source§

fn cache_set(&mut self, k: K, v: V) -> Option<V>

Insert a key, value pair and return the previous value
source§

fn cache_remove<Q>(&mut self, k: &Q) -> Option<V>
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Remove a cached value Read more
source§

fn cache_clear(&mut self)

Remove all cached values. Keeps the allocated memory for reuse.
source§

fn cache_reset(&mut self)

Remove all cached values. Free memory and return to initial state
source§

fn cache_size(&self) -> usize

Return the current cache size (number of elements)
source§

fn cache_hits(&self) -> Option<u64>

Return the number of times a cached value was successfully retrieved
source§

fn cache_misses(&self) -> Option<u64>

Return the number of times a cached value was unable to be retrieved
source§

fn cache_reset_metrics(&mut self)

Reset misses/hits counters
source§

fn cache_capacity(&self) -> Option<usize>

Return the cache capacity
source§

fn cache_lifespan(&self) -> Option<u64>

Return the lifespan of cached values (time to eviction)
source§

fn cache_set_lifespan(&mut self, _seconds: u64) -> Option<u64>

Set the lifespan of cached values, returns the old value
source§

fn cache_unset_lifespan(&mut self) -> Option<u64>

Remove the lifespan for cached values, returns the old value. Read more
source§

impl<K: Clone + Hash + Eq, V: Clone + CanExpire> Clone for ExpiringValueCache<K, V>

source§

fn clone(&self) -> ExpiringValueCache<K, V>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K: Hash + Eq + Clone, V: CanExpire + Clone> CloneCached<K, V> for ExpiringValueCache<K, V>

source§

fn cache_get_expired<Q>(&mut self, k: &Q) -> (Option<V>, bool)
where K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Attempt to retrieve a cached value and indicate whether that value was evicted.
source§

impl<K: Debug + Hash + Eq, V: Debug + CanExpire> Debug for ExpiringValueCache<K, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<K, V> Freeze for ExpiringValueCache<K, V>

§

impl<K, V> RefUnwindSafe for ExpiringValueCache<K, V>

§

impl<K, V> Send for ExpiringValueCache<K, V>
where K: Send, V: Send,

§

impl<K, V> Sync for ExpiringValueCache<K, V>
where K: Sync, V: Sync,

§

impl<K, V> Unpin for ExpiringValueCache<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> UnwindSafe for ExpiringValueCache<K, V>
where K: UnwindSafe, V: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.