6 个版本
0.3.1 | 2024 年 3 月 3 日 |
---|---|
0.3.0 | 2023 年 11 月 14 日 |
0.2.0 | 2023 年 11 月 13 日 |
0.1.2 | 2023 年 10 月 18 日 |
#174 in 并发
7,672 每月下载量
用于 esp-wifi
6KB
portable_atomic_enum
这个 crate 是 atomic_enum 的分支,并可选择使用 portable-atomic
以支持更多目标。
创建围绕 C 风格枚举的原子包装器的属性。
内部,生成的包装器使用 AtomicUsize
存储值。原子操作与 AtomicUsize
的等效操作具有相同的语义。
示例
# use atomic_enum::atomic_enum;
# use std::sync::atomic::Ordering;
#[atomic_enum]
#[derive(Clone, Copy, Debug, 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]
环境中使用。
Cargo 功能
portable-atomic
:使用portable-atomic
充填原子类型
依赖项
~0.3–1MB
~21K SLoC