#lock-free #static #lazy-evaluation #once

无 std lock-free-static

无锁静态变量

4 个版本

0.2.0 2023年10月26日
0.1.0 2023年10月2日

#553 in 并发

每月 36 次下载

MIT/Apache

21KB
432

lock-free-static

Crates.io Docs.rs Gitlab CI License

无锁静态变量。

示例

静态变量

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);
}

可变静态变量

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);
}

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则您提交的任何旨在包含在本作品中的贡献,如 Apache-2.0 许可证中定义的,应如上双许可,不附加任何额外条款或条件。

无运行时依赖