#枚举 #原子

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 • Rust 包仓库 3064/week @ 2024-03-14 • Rust 包仓库 3111/week @ 2024-03-21 • Rust 包仓库 2778/week @ 2024-03-28 • Rust 包仓库 2876/week @ 2024-04-04 • Rust 包仓库 2723/week @ 2024-04-11 • Rust 包仓库 2908/week @ 2024-04-18 • Rust 包仓库 3637/week @ 2024-04-25 • Rust 包仓库 3233/week @ 2024-05-02 • Rust 包仓库 3765/week @ 2024-05-09 • Rust 包仓库 3606/week @ 2024-05-16 • Rust 包仓库 2911/week @ 2024-05-23 • Rust 包仓库 3482/week @ 2024-05-30 • Rust 包仓库 2661/week @ 2024-06-06 • Rust 包仓库 3596/week @ 2024-06-13 • Rust 包仓库 2861/week @ 2024-06-20 • Rust 包仓库 2223/week @ 2024-06-27 • Rust 包仓库

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