Struct once_cell::unsync::OnceCell[][src]

pub struct OnceCell<T> { /* fields omitted */ }

A cell which can be written to only once. Not thread safe.

Unlike ::std::cell::RefCell, a OnceCell provides simple & references to the contents.

Example

use once_cell::unsync::OnceCell;

let cell = OnceCell::new();
assert!(cell.get().is_none());

let value: &String = cell.get_or_init(|| {
    "Hello, World!".to_string()
});
assert_eq!(value, "Hello, World!");
assert!(cell.get().is_some());

Methods

impl<T> OnceCell<T>
[src]

INIT: OnceCell<T> = OnceCell{inner: <UnsafeCell>::new(None),}

An empty cell, for initialization in a const context.

Creates a new empty cell.

Gets the reference to the underlying value. Returns None if the cell is empty.

Sets the contents of this cell to value. Returns Ok(()) if the cell was empty and Err(value) if it was full.

Example

use once_cell::unsync::OnceCell;

let cell = OnceCell::new();
assert!(cell.get().is_none());

assert_eq!(cell.set(92), Ok(()));
assert_eq!(cell.set(62), Err(62));

assert!(cell.get().is_some());

Gets the contents of the cell, initializing it with f if the cell was empty.

Example

use once_cell::unsync::OnceCell;

let cell = OnceCell::new();
let value = cell.get_or_init(|| 92);
assert_eq!(value, &92);
let value = cell.get_or_init(|| unreachable!());
assert_eq!(value, &92);

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.

Example

use once_cell::unsync::OnceCell;

let cell = OnceCell::new();
assert_eq!(cell.get_or_try_init(|| Err(())), Err(()));
assert!(cell.get().is_none());
let value = cell.get_or_try_init(|| -> Result<i32, ()> {
    Ok(92)
});
assert_eq!(value, Ok(&92));
assert_eq!(cell.get(), Some(&92))

Trait Implementations

impl<T: Debug> Debug for OnceCell<T>
[src]

Formats the value using the given formatter. Read more

impl<T> Default for OnceCell<T>
[src]

Returns the "default value" for a type. Read more

impl<T: Clone> Clone for OnceCell<T>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<T> Send for OnceCell<T> where
    T: Send

impl<T> !Sync for OnceCell<T>