5 releases

0.2.1 Nov 28, 2024
0.2.0 Oct 26, 2023
0.1.0 Oct 2, 2023

#262 in Concurrency

Download history 1/week @ 2024-12-02 14/week @ 2024-12-09 10/week @ 2025-02-10 11/week @ 2025-02-17

275 downloads per month
Used in ringbuf

MIT/Apache

21KB
437 lines

lock-free-static

Crates.io Docs.rs Gitlab CI License

Lock-free static variables.

Examples

Static variable

use lock_free_static::lock_free_static;

lock_free_static!{
    static VAR: i32 = 123;
}

fn main() {
    assert!(VAR.init());
    assert_eq!(*VAR.get().unwrap(), 123);
}

Mutable static variable

use lock_free_static::lock_free_static;

lock_free_static!{
    static mut VAR: i32 = 123;
}

fn main() {
    assert!(VAR.init());

    let mut guard = VAR.lock().unwrap();
    assert_eq!(*guard, 123);
    *guard = 321;
    drop(guard);

    assert_eq!(*VAR.lock().unwrap(), 321);
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps