#[macro_use] extern crate binding; c_flags! { /// A sample of flags useful for the EvDev library. flags ReadFlags: u32 { /// Process data in sync mode. const SYNC = 0b000000000000000000000001, /// Process data in normal mode. const NORMAL = 0b000000000000000000000010, /// Pretend the next event is a SYN_DROPPED and require /// the caller to sync. const FORCE_SYNC = 0b000000000000000000000100, /// The fd is not in O_NONBLOCK and a read may block. const BLOCKING = 0b000000000000000000001000 } } pub fn main() { let flag: ReadFlags; flag = SYNC | NORMAL; println!("Flag: {:#010b}", flag.get_bits()); println!("Flag: {}", flag); }