#原子 #枚举 #顺序

portable_atomic_enum

创建一个围绕 C 风格枚举的可移植原子包装器的属性

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 并发

Download history 596/week @ 2024-04-20 651/week @ 2024-04-27 568/week @ 2024-05-04 760/week @ 2024-05-11 813/week @ 2024-05-18 2052/week @ 2024-05-25 1405/week @ 2024-06-01 1308/week @ 2024-06-08 1177/week @ 2024-06-15 1797/week @ 2024-06-22 1820/week @ 2024-06-29 1601/week @ 2024-07-06 2544/week @ 2024-07-13 1741/week @ 2024-07-20 1641/week @ 2024-07-27 1514/week @ 2024-08-03

7,672 每月下载量
用于 esp-wifi

MIT 许可证

6KB

cargo version docs.rs version

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