bitflags
bitflags
generates flags enums with well-defined semantics and ergonomic end-user APIs.
You can use bitflags
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 use bitflags
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.
Usage
Add this to your Cargo.toml
:
[]
= "2.9.4"
and this to your source code:
use bitflags;
Example
Generate a flags structure:
use bitflags;
// The `bitflags!` macro generates `struct`s that manage a set of flags.
bitflags!
Cargo features
The bitflags
library defines a few Cargo features that you can opt-in to:
std
: Implement theError
trait on error types used bybitflags
.serde
: Support derivingserde
traits on generated flags types.arbitrary
: Support derivingarbitrary
traits on generated flags types.bytemuck
: Support derivingbytemuck
traits on generated flags types.
Also see bitflags_derive
for other flags-aware traits.
Rust Version Support
The minimum supported Rust version is documented in the Cargo.toml
file.
This may be bumped in minor releases as necessary.