#枚举 #原子

atomic_enum

创建一个C风格枚举的原子包装器的属性

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

Download history 3064/week @ 2024-03-14 3111/week @ 2024-03-21 2778/week @ 2024-03-28 2876/week @ 2024-04-04 2723/week @ 2024-04-11 2908/week @ 2024-04-18 3637/week @ 2024-04-25 3233/week @ 2024-05-02 3765/week @ 2024-05-09 3606/week @ 2024-05-16 2911/week @ 2024-05-23 3482/week @ 2024-05-30 2661/week @ 2024-06-06 3596/week @ 2024-06-13 2861/week @ 2024-06-20 2223/week @ 2024-06-27

12,078 每月下载量
20 个crates中 使用(直接使用 11 个)

MIT 许可证

20KB
297

cargo version docs.rs version

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