[][src]Type Definition conquer_once::OnceCell

type OnceCell<T> = OnceCell<T, ParkThread>;

An interior mutability cell type which allows synchronized one-time initialization and read-only access exclusively after initialization.

This type uses the blocking synchronization mechanism provided by the underlying operating system.

For the API of this type alias, see the generic OnceCell type.

Examples

use conquer_once::OnceCell;

#[derive(Copy, Clone)]
struct Configuration {
    mode: i32,
    threshold: u64,
    msg: &'static str,
}

static CONFIG: OnceCell<Configuration> = OnceCell::uninit();

// producer thread
CONFIG.init_once(|| Configuration {
    mode: 2,
    threshold: 128,
    msg: "..."
});

// consumer thread
let res = CONFIG.get().copied();
if let Some(config) = res {
    assert_eq!(config.mode, 2);
    assert_eq!(config.threshold, 128);
}