1 个不稳定版本
| 0.1.0 | 2019年4月14日 | 
|---|
#41 在 #bitflags
11KB
206 行
atomic_bitfield
原子位字段
为核心原子类型提供位字段抽象。此包默认与 no_std 兼容,并且本身不使用任何 unsafe 代码。
注意:在 stable 版本中,此包假定存在以下原子,这可能导致在某些平台上编译失败。
- Atomic{U,I}32和更小
- 原子{U,I}大小
- Atomic{U,I}64在64位平台上
此包的 nightly 特性启用了 target_has_atomic,并使用它来检测哪些原子类型可用。
使用示例
use core::sync::atomic::{AtomicU8, Ordering::Relaxed};
use atomic_bitfield::AtomicBitField as _;
let flags = AtomicU8::new(0b1000);
let prev_state = flags.set_bit(0, Relaxed);
assert_eq!(prev_state, false);
assert_eq!(flags.load(Relaxed), 0b1001);
let prev_state = flags.toggle_bit(3, Relaxed);
assert_eq!(prev_state, true);
assert_eq!(flags.load(Relaxed), 0b0001);
let prev_state = flags.swap_bit(0, false, Relaxed);
assert_eq!(prev_state, true);
assert_eq!(flags.load(Relaxed), 0b0000);
许可证:MIT
依赖项
~37KB