#flags #bit #bitmask #set-bit

无 std bitflags

用于生成类似位标志的结构宏

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 模式

Download history 4495340/week @ 2024-05-03 4559487/week @ 2024-05-10 4649165/week @ 2024-05-17 4375259/week @ 2024-05-24 4653106/week @ 2024-05-31 4724981/week @ 2024-06-07 4610821/week @ 2024-06-14 4888730/week @ 2024-06-21 4469725/week @ 2024-06-28 4677547/week @ 2024-07-05 4890969/week @ 2024-07-12 5037494/week @ 2024-07-19 5039701/week @ 2024-07-26 5233011/week @ 2024-08-02 5534048/week @ 2024-08-09 4724076/week @ 2024-08-16

每月 21,458,216 次下载
用于 67,026 个crate (2,757 直接)

MIT/Apache

145KB
3.5K SLoC

bitflags

Rust Latest version Documentation License

bitflags 生成具有良好定义的语义和用户友好的 API 的标志枚举。

您可以使用 bitflags

  • 提供对 C API 的更用户友好的绑定,其中标志可能事先完全未知或可能未知。
  • 生成具有字符串解析和格式化支持的高效选项类型。

您不能使用 bitflags

  • 保证仅设置与定义的标志相对应的位。 bitflags 允许访问底层位类型,因此可以设置任意位。

  • 定义位字段。 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