superbitty 0.3.2

A bitfields crate.
Documentation
use superbitty::BitFieldCompatible;

fn assert_values<T: BitFieldCompatible>(shift: u32, bits_len: u32, bits_mask: u128) {
    assert_eq!(T::SHIFT, shift);
    assert_eq!(T::BITS_LEN, bits_len);
    assert_eq!(T::BITS_MASK, bits_mask);
}

#[derive(BitFieldCompatible, Clone, Copy)]
enum OneZeroVariantEnum {
    Variant,
}

#[derive(BitFieldCompatible, Clone, Copy)]
enum OneNonZeroVariantEnum {
    Variant = 0b10,
}

#[derive(BitFieldCompatible, Clone, Copy)]
enum Scattered {
    A = 0,
    B = 0b0000000000000100,
    C = 0b0010000000000000,
}

#[derive(BitFieldCompatible, Clone, Copy)]
enum Dense {
    A = 0,
    B = 0b0000000100,
    C = 0b0000001000,
    D = 0b0000010000,
    E = 0b0000100000,
    F = 0b0001000000,
    G = 0b0010000000,
}

#[derive(BitFieldCompatible, Clone, Copy)]
enum BigOne {
    A = 0b1111111,
}

#[test]
fn test() {
    assert_values::<OneZeroVariantEnum>(0, 0, 0);
    assert_values::<OneNonZeroVariantEnum>(1, 1, 0b1);
    assert_values::<Scattered>(2, 12, 0b00111111111111);
    assert_values::<Dense>(2, 6, 0b00111111);
    assert_values::<BigOne>(0, 7, 0b1111111);
}