pub struct CacheBuilder<K, V, C> { /* private fields */ }
Available on crate feature sync only.
Expand description

Builds a Cache or with various configuration knobs.

Examples

use mini_moka::sync::Cache;
use std::time::Duration;

let cache = Cache::builder()
    // Max 10,000 entries
    .max_capacity(10_000)
    // Time to live (TTL): 30 minutes
    .time_to_live(Duration::from_secs(30 * 60))
    // Time to idle (TTI):  5 minutes
    .time_to_idle(Duration::from_secs( 5 * 60))
    // Create the cache.
    .build();

// This entry will expire after 5 minutes (TTI) if there is no get().
cache.insert(0, "zero");

// This get() will extend the entry life for another 5 minutes.
cache.get(&0);

// Even though we keep calling get(), the entry will expire
// after 30 minutes (TTL) from the insert().

Implementations§

source§

impl<K, V> CacheBuilder<K, V, Cache<K, V, RandomState>>
where K: Eq + Hash + Send + Sync + 'static, V: Clone + Send + Sync + 'static,

source

pub fn new(max_capacity: u64) -> Self

Construct a new CacheBuilder that will be used to build a Cache or SegmentedCache holding up to max_capacity entries.

source

pub fn build(self) -> Cache<K, V, RandomState>

Builds a Cache<K, V>.

If you want to build a SegmentedCache<K, V>, call segments method before calling this method.

Panics

Panics if configured with either time_to_live or time_to_idle higher than 1000 years. This is done to protect against overflow when computing key expiration.

source

pub fn build_with_hasher<S>(self, hasher: S) -> Cache<K, V, S>
where S: BuildHasher + Clone + Send + Sync + 'static,

Builds a Cache<K, V, S>, with the given hasher.

If you want to build a SegmentedCache<K, V>, call segments method before calling this method.

Panics

Panics if configured with either time_to_live or time_to_idle higher than 1000 years. This is done to protect against overflow when computing key expiration.

source§

impl<K, V, C> CacheBuilder<K, V, C>

source

pub fn max_capacity(self, max_capacity: u64) -> Self

Sets the max capacity of the cache.

source

pub fn initial_capacity(self, number_of_entries: usize) -> Self

Sets the initial capacity (number of entries) of the cache.

source

pub fn weigher( self, weigher: impl Fn(&K, &V) -> u32 + Send + Sync + 'static ) -> Self

Sets the weigher closure of the cache.

The closure should take &K and &V as the arguments and returns a u32 representing the relative size of the entry.

source

pub fn time_to_live(self, duration: Duration) -> Self

Sets the time to live of the cache.

A cached entry will be expired after the specified duration past from insert.

Panics

CacheBuilder::build* methods will panic if the given duration is longer than 1000 years. This is done to protect against overflow when computing key expiration.

source

pub fn time_to_idle(self, duration: Duration) -> Self

Sets the time to idle of the cache.

A cached entry will be expired after the specified duration past from get or insert.

Panics

CacheBuilder::build* methods will panic if the given duration is longer than 1000 years. This is done to protect against overflow when computing key expiration.

Trait Implementations§

source§

impl<K, V> Default for CacheBuilder<K, V, Cache<K, V, RandomState>>
where K: Eq + Hash + Send + Sync + 'static, V: Clone + Send + Sync + 'static,

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<K, V, C> !RefUnwindSafe for CacheBuilder<K, V, C>

§

impl<K, V, C> Send for CacheBuilder<K, V, C>
where C: Send,

§

impl<K, V, C> Sync for CacheBuilder<K, V, C>
where C: Sync,

§

impl<K, V, C> Unpin for CacheBuilder<K, V, C>
where C: Unpin,

§

impl<K, V, C> !UnwindSafe for CacheBuilder<K, V, C>

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.