43 个版本 (24 个稳定版)
2.6.0 | 2024 年 6 月 24 日 |
---|---|
2.5.0 | 2024 年 3 月 19 日 |
2.4.2 | 2024 年 1 月 16 日 |
2.4.1 | 2023 年 10 月 15 日 |
0.1.1 | 2015 年 2 月 9 日 |
#1 in Rust 模式
每月 21,458,216 次下载
用于 67,026 个crate (2,757 直接)
145KB
3.5K SLoC
bitflags
bitflags
生成具有良好定义的语义和用户友好的 API 的标志枚举。
您可以使用 bitflags
来
- 提供对 C API 的更用户友好的绑定,其中标志可能事先完全未知或可能未知。
- 生成具有字符串解析和格式化支持的高效选项类型。
您不能使用 bitflags
来
使用方法
将此添加到您的 Cargo.toml
[dependencies]
bitflags = "2.6.0"
并将此添加到您的源代码中
use bitflags::bitflags;
示例
生成标志结构
use bitflags::bitflags;
// The `bitflags!` macro generates `struct`s that manage a set of flags.
bitflags! {
/// Represents a set of flags.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
struct Flags: u32 {
/// The value `A`, at bit position `0`.
const A = 0b00000001;
/// The value `B`, at bit position `1`.
const B = 0b00000010;
/// The value `C`, at bit position `2`.
const C = 0b00000100;
/// The combination of `A`, `B`, and `C`.
const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
}
}
fn main() {
let e1 = Flags::A | Flags::C;
let e2 = Flags::B | Flags::C;
assert_eq!((e1 | e2), Flags::ABC); // union
assert_eq!((e1 & e2), Flags::C); // intersection
assert_eq!((e1 - e2), Flags::A); // set difference
assert_eq!(!e2, Flags::A); // set complement
}
Rust 版本支持
最低支持的 Rust 版本在 Cargo.toml
文件中记录。这可能在次要版本中根据需要提高。
依赖关系
~0–425KB