pub struct OnceBox<T> { /* private fields */ }
Expand description
A thread-safe cell which can be written to only once.
Implementations§
Source§impl<T> OnceBox<T>
impl<T> OnceBox<T>
Sourcepub fn set(&self, value: Box<T>) -> Result<(), Box<T>>
pub fn set(&self, value: Box<T>) -> Result<(), Box<T>>
Sets the contents of this cell to value
.
Returns Ok(())
if the cell was empty and Err(value)
if it was
full.
Sourcepub fn get_or_init<F>(&self, f: F) -> &T
pub fn get_or_init<F>(&self, f: F) -> &T
Gets the contents of the cell, initializing it with f
if the cell was
empty.
If several threads concurrently run get_or_init
, more than one f
can
be called. However, all threads will return the same value, produced by
some f
.
Sourcepub fn get_or_try_init<F, E>(&self, f: F) -> Result<&T, E>
pub fn get_or_try_init<F, E>(&self, f: F) -> Result<&T, E>
Gets the contents of the cell, initializing it with f
if
the cell was empty. If the cell was empty and f
failed, an
error is returned.
If several threads concurrently run get_or_init
, more than one f
can
be called. However, all threads will return the same value, produced by
some f
.
Trait Implementations§
impl<T: Sync + Send> Sync for OnceBox<T>
Auto Trait Implementations§
impl<T> !Freeze for OnceBox<T>
impl<T> RefUnwindSafe for OnceBox<T>where
T: RefUnwindSafe,
impl<T> Send for OnceBox<T>where
T: Send,
impl<T> Unpin for OnceBox<T>
impl<T> UnwindSafe for OnceBox<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
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