[][src]Struct dyn_cache::CacheMiss

pub struct CacheMiss<'k, Key: ?Sized, Scope, Input, Output, H = DefaultHashBuilder> { /* fields omitted */ }

The result of a failed attempt to retrieve a value from the cache. Initialize a full CacheEntry for storage with CacheMiss::init.

use dyn_cache::local::LocalCache;
let mut cache = LocalCache::default();
let (scope, arg) = (&'a', &1);

let miss = cache.get(scope, arg).expect_err("first access will always be a miss");

Implementations

impl<'k, Key: ?Sized, Scope, Input, Output, H> CacheMiss<'k, Key, Scope, Input, Output, H>[src]

pub fn init<R>(
    self,
    query: impl FnOnce(&Input) -> (Output, R)
) -> (CacheEntry<'k, Key, Scope, Input, Output, H>, R)
[src]

Prepare the cache miss to be populated by running query(arg), returning a separate value. The value returned (R) is typically derived in some way from the stored Output.

let (entry, result): (_, Vec<usize>) = miss.init(|&n| {
    let v: Vec<usize> = vec![n; n];
    (v.clone(), v)
});
cache.store(entry);
assert_eq!(result, vec![1usize]);

Trait Implementations

impl<'k, Key: Clone + ?Sized, Scope: Clone, Input: Clone, Output: Clone, H: Clone> Clone for CacheMiss<'k, Key, Scope, Input, Output, H>[src]

impl<'k, Key: ?Sized, Scope, Input, Output, H> Debug for CacheMiss<'k, Key, Scope, Input, Output, H> where
    Key: Debug,
    Scope: Debug,
    Input: Debug
[src]

impl<'k, Key: Eq + ?Sized, Scope: Eq, Input: Eq, Output: Eq, H: Eq> Eq for CacheMiss<'k, Key, Scope, Input, Output, H>[src]

impl<'k, Key: PartialEq + ?Sized, Scope: PartialEq, Input: PartialEq, Output: PartialEq, H: PartialEq> PartialEq<CacheMiss<'k, Key, Scope, Input, Output, H>> for CacheMiss<'k, Key, Scope, Input, Output, H>[src]

impl<'k, Key: ?Sized, Scope, Input, Output, H> StructuralEq for CacheMiss<'k, Key, Scope, Input, Output, H>[src]

impl<'k, Key: ?Sized, Scope, Input, Output, H> StructuralPartialEq for CacheMiss<'k, Key, Scope, Input, Output, H>[src]

Auto Trait Implementations

impl<'k, Key, Scope, Input, Output, H = RandomState> !RefUnwindSafe for CacheMiss<'k, Key, Scope, Input, Output, H>

impl<'k, Key: ?Sized, Scope, Input, Output, H> Send for CacheMiss<'k, Key, Scope, Input, Output, H> where
    H: Send,
    Input: Send,
    Key: Sync,
    Output: Send,
    Scope: Send

impl<'k, Key: ?Sized, Scope, Input, Output, H> Sync for CacheMiss<'k, Key, Scope, Input, Output, H> where
    H: Sync,
    Input: Sync,
    Key: Sync,
    Output: Sync,
    Scope: Sync

impl<'k, Key: ?Sized, Scope, Input, Output, H> Unpin for CacheMiss<'k, Key, Scope, Input, Output, H> where
    H: Unpin,
    Input: Unpin,
    Output: Unpin,
    Scope: Unpin

impl<'k, Key, Scope, Input, Output, H = RandomState> !UnwindSafe for CacheMiss<'k, Key, Scope, Input, Output, H>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> AsContext for T where
    T: Debug + 'static, 
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastSync for T where
    T: Send + Sync + Any
[src]

impl<T> Erased for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.