A Rust macro to generate structures which behave like a set of bitflags
Add this to your Cargo.toml
:
[dependencies]
bitflags = "1.3"
and this to your source code:
use bitflags::bitflags;
Generate a flags structure:
use bitflags::bitflags;
bitflags! {
struct Flags: u32 {
const A = 0b00000001;
const B = 0b00000010;
const C = 0b00000100;
const ABC = Self::A.bits | Self::B.bits | Self::C.bits;
}
}
fn main() {
let mut flags = Flags::A | Flags::B;
assert!(flags.contains(Flags::A));
flags.set(Flags::C, true);
assert!(flags.contains(Flags::A | Flags::C));
}
The minimum supported Rust version is 1.46 due to use of associated constants and const functions.