4个版本 (2个重大更改)
0.3.0 | 2024年2月21日 |
---|---|
0.2.0 | 2022年7月25日 |
0.1.1 | 2020年3月9日 |
0.1.0 | 2018年12月6日 |
#194 in 并发
12,078 每月下载量
在 20 个crates中 使用(直接使用 11 个)
20KB
297 行
atomic_enum
创建一个C风格枚举的原子包装器的属性。
内部,生成的包装器使用 AtomicUsize
来存储值。原子操作具有与 AtomicUsize
的等效操作的相同语义。
示例
# use atomic_enum::atomic_enum;
# use std::sync::atomic::Ordering;
#[atomic_enum]
#[derive(PartialEq)]
enum CatState {
Dead = 0,
BothDeadAndAlive,
Alive,
}
let state = AtomicCatState::new(CatState::Dead);
state.store(CatState::Alive, Ordering::Relaxed);
assert_eq!(state.load(Ordering::Relaxed), CatState::Alive);
此属性不使用或生成任何不安全代码。
该crate可以在 #[no_std]
环境中使用。
维护注意事项
此crate处于被动维护状态。
依赖项
~270–720KB
~17K SLoC