modular-bitfield 0.11.2

Allows to easily define bitfield types with modular building blocks.
Documentation
use modular_bitfield::prelude::*;

#[bitfield]
#[derive(Debug)]
pub struct Color {
    r: B6,
    g: B6,
    b: B6,
    a: B6,
}

fn main() {
    let color = Color::new()
        .with_r(63)
        .with_g(32)
        .with_b(16)
        .with_a(8);
    assert_eq!(
        format!("{:?}", color),
        "Color { r: 63, g: 32, b: 16, a: 8 }",
    );
    assert_eq!(
        format!("{:#x?}", color),
        "Color {\n    r: 0x3f,\n    g: 0x20,\n    b: 0x10,\n    a: 0x8,\n}",
    );
}