# bitutils ## Providing bitfields and related functionality ### API At the core of bitutils lies one macro, `bf!`. #### Syntax: ```rust bf!(BitfieldName[uXX] { field1: lower:upper, // e.g. field1: 0:3, which would encompass the least significant nibble field2: 4:6, field3: 7:8, field5: 9:9, // ... }); ``` #### Usage: ```rust let mut bf = BitfieldName::new(0xFFFF); bf.field1(); bf.set_field2(0x3); bf.val &= 0xFF; println!("{:x?}", bf); ``` Bitutils also provides the `bits!` and `bit!` macros. ```rust let foo = bits!(0xFFFF, 0:3); assert_eq!(0xFF, foo); let bar = bit!(0xF, 7); assert_eq!(1, bar); ```