Brendan Zabarauskas
|
8b58981871
|
Add a bitflags! macro
The `bitflags!` macro generates a `struct` that holds a set of C-style bitmask flags. It is useful for creating typesafe wrappers for C APIs.
For example:
~~~rust
#[feature(phase)];
#[phase(syntax)] extern crate collections;
bitflags!(Flags: u32 {
FlagA = 0x00000001,
FlagB = 0x00000010,
FlagC = 0x00000100,
FlagABC = FlagA.bits
| FlagB.bits
| FlagC.bits
})
fn main() {
let e1 = FlagA | FlagC;
let e2 = FlagB | FlagC;
assert!((e1 | e2) == FlagABC); // union
assert!((e1 & e2) == FlagC); // intersection
assert!((e1 - e2) == FlagA); // set difference
}
~~~
|
2014-04-29 18:50:31 -07:00 |
|