critical-once-cell 0.2.0

Thread-safe OnceCell and Lazy backed by critical section
Documentation

Pipeline Crates.io API reference

critical-once-cell

Drop-in replacements for [core::lazy::OnceCell] and [core::lazy::Lazy], backed by [critical_section].

Examples

CriticalOnceCell

use critical_once_cell::CriticalOnceCell;

static CELL: CriticalOnceCell<String> = CriticalOnceCell::new();

fn main() {
    CELL.set("Hello, World!".to_owned()).unwrap();

    assert_eq!(*CELL.get().unwrap(), "Hello, World!");
}

CriticalLazy

use critical_once_cell::CriticalLazy;

static LAZY: CriticalLazy<String> = CriticalLazy::new(|| "Hello, World!".to_owned());

fn main() {
    assert_eq!(*LAZY, "Hello, World!");
}

For more details, see docs.

Usage

Add this to your Cargo.toml:

[dependencies]
critical-once-cell = "0.2.0"

License

MPL-2.0