Movatterモバイル変換


[0]ホーム

URL:


Docs.rs

bitflags 2.9.0

A macro to generate structures which behave like bitflags.
Documentation

bitflags

RustLatest versionDocumentationLicense

bitflags generates flags enums with well-defined semantics and ergonomic end-user APIs.

You can usebitflags to:

  • provide more user-friendly bindings to C APIs where flags may or may not be fully known in advance.
  • generate efficient options types with string parsing and formatting support.

You can't usebitflags to:

  • guarantee only bits corresponding to defined flags will ever be set.bitflags allows access to the underlying bits type so arbitrary bits may be set.

  • define bitfields.bitflags only generates types where set bits denote the presence of some combination of flags.

  • Documentation

  • Specification

  • Release notes

Usage

Add this to yourCargo.toml:

[dependencies]bitflags="2.9.0"

and this to your source code:

usebitflags::bitflags;

Example

Generate a flags structure:

usebitflags::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)]structFlags: 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();}}fnmain(){let e1=Flags::A|Flags::C;let e2=Flags::B|Flags::C;assert_eq!((e1| e2),Flags::ABC);// unionassert_eq!((e1& e2),Flags::C);// intersectionassert_eq!((e1- e2),Flags::A);// set differenceassert_eq!(!e2,Flags::A);// set complement}

Rust Version Support

The minimum supported Rust version is documented in theCargo.toml file.This may be bumped in minor releases as necessary.


[8]ページ先頭

©2009-2025 Movatter.jp