#原子 #位字段 # #bitflags # #无标准库

无标准库 atomic_bitfield

核心原子类型的位字段抽象

1 个不稳定版本

0.1.0 2019年4月14日

#41#bitflags

MIT 许可证

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