Robbepop / modular-bitfield

Macro to generate bitfields for structs that allow for modular use of enums.
Apache License 2.0
155 stars 40 forks source link

Implement bitfield structs in structs #29

Closed Robbepop closed 3 years ago

Robbepop commented 3 years ago

Implements https://github.com/Robbepop/modular-bitfield/issues/5.

This now works:

use modular_bitfield::prelude::*;

#[bitfield(specifier = true)]
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct Header {
    a: B2,
    b: B3,
}

#[bitfield]
#[derive(Debug, PartialEq, Eq)]
pub struct Base {
    pub header: Header,
    pub rest: B3,
}

fn main() {
    let mut base = Base::new();
    assert_eq!(base.header(), Header::new());
    let h = Header::new().with_a(1).with_b(2);
    base.set_header(h);
    assert_eq!(base.header(), h);
    assert_eq!(h2.a(), 1);
    assert_eq!(h2.b(), 2);
}