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