A bitfields crate.
```rust use superbitty::{bitfields, BitFieldCompatible};
pub enum Enum { A, B, C, D, }
pub struct Rest(pub u8);
// SAFETY: We only set this via Bitfields
, and thus the values are guaranteed
// to stay in range.
unsafe impl BitFieldCompatible for Rest {
const SHIFT: u32 = 0;
const BITSLEN: u32 = 6;
fn intoraw(self) -> u128 { self.0 as u128 }
unsafe fn from_raw(v: u128) -> Self { Self(v as u8) }
}
bitfields! { pub struct Bitfields : u8 { pub e: Enum, pub r: Rest, } }
fn main() { let mut instance = Bitfields::new(Enum::B, Rest(0b010)); asserteq!(instance.e(), Enum::B); instance.setr(Rest(0b101)); assert_eq!(instance.r().0, 0b101); } ```