pub struct Cached<T: 'static> { /* private fields */ }Expand description
RAII guard that borrows a value from a thread-local cache and returns it on drop.
Guards are thread-affine and must be dropped on the same thread where they were created.
Implementations§
Source§impl<T: 'static> Cached<T>
impl<T: 'static> Cached<T>
Sourcepub fn take<E>(
cache: &'static LocalKey<RefCell<(bool, Option<T>)>>,
create: impl FnOnce() -> Result<T, E>,
reset: impl FnOnce(&mut T) -> Result<(), E>,
) -> Result<Self, E>
pub fn take<E>( cache: &'static LocalKey<RefCell<(bool, Option<T>)>>, create: impl FnOnce() -> Result<T, E>, reset: impl FnOnce(&mut T) -> Result<(), E>, ) -> Result<Self, E>
Take a value from the thread-local cache.
On a cache hit the reset closure reconfigures the existing instance.
On a miss the create closure constructs a new one. Both closures may
fail with E.
This cache provides no synchronization guarantees. Attempting to take a second guard from the same cache on the same thread while one is already held will panic.
Trait Implementations§
Auto Trait Implementations§
impl<T> !Send for Cached<T>
impl<T> !Sync for Cached<T>
impl<T> Freeze for Cached<T>where
T: Freeze,
impl<T> RefUnwindSafe for Cached<T>where
T: RefUnwindSafe,
impl<T> Unpin for Cached<T>where
T: Unpin,
impl<T> UnsafeUnpin for Cached<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for Cached<T>where
T: UnwindSafe,
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
impl<R> CryptoRng for R
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<R> RngCore for Rwhere
R: Rng,
Source§impl<R> RngExt for R
impl<R> RngExt for R
Source§fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
Return a random value via the
StandardUniform distribution. Read moreSource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
Source§fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Generate a random value in the given range. Read more
Source§fn random_bool(&mut self, p: f64) -> bool
fn random_bool(&mut self, p: f64) -> bool
Return a bool with a probability
p of being true. Read moreSource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
Return a bool with a probability of
numerator/denominator of being
true. Read moreSource§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Sample a new value, using the given distribution. Read more
Source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
Create an iterator that generates values using the given distribution. Read more