pub struct LazyHandle<T> { /* private fields */ }Expand description
Handle to a value computed on a background thread.
The computation is spawned immediately on creation and runs concurrently.
The result is resolved on first access via Self::get and cached in a
OnceLock for subsequent calls.
This type is cheaply cloneable via internal Arc.
Create via Runtime::spawn_blocking_named.
Implementations§
Source§impl<T: Send + 'static> LazyHandle<T>
impl<T: Send + 'static> LazyHandle<T>
Sourcepub fn get(&self) -> &T
pub fn get(&self) -> &T
Blocks until the background task completes and returns a reference to the result.
On the first call this awaits the receiver; subsequent calls return the cached value without blocking.
§Panics
Panics if the background task was dropped without producing a value.
Sourcepub fn try_into_inner(self) -> Result<T, Self>
pub fn try_into_inner(self) -> Result<T, Self>
Consumes the handle and returns the inner value if this is the only handle.
Returns Err(self) if other clones exist, so the caller can fall back
to a reference-based path (e.g. clone_into_sorted instead of into_sorted).
Blocks if the background task hasn’t completed yet.
Trait Implementations§
Source§impl<T: Clone> Clone for LazyHandle<T>
impl<T: Clone> Clone for LazyHandle<T>
Source§fn clone(&self) -> LazyHandle<T>
fn clone(&self) -> LazyHandle<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<T> Freeze for LazyHandle<T>
impl<T> RefUnwindSafe for LazyHandle<T>where
T: RefUnwindSafe + UnwindSafe,
impl<T> Send for LazyHandle<T>
impl<T> Sync for LazyHandle<T>
impl<T> Unpin for LazyHandle<T>
impl<T> UnsafeUnpin for LazyHandle<T>
impl<T> UnwindSafe for LazyHandle<T>where
T: RefUnwindSafe + 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes