bitfields 2.0.3

Macro for for generating bitfields from structs and enum bitflags for defining packed binary schemas in low-level systems (e.g. embedded development or emulators)
Documentation
use bitfields::bitfield;

#[bitfield([u8; 4])]
struct Packet {
    src_port: u16,
    dst_port: u16,
}

fn main() {
    let mut pkt = Packet::new();
    pkt.set_src_port(8080);
    pkt.set_dst_port(443);

    assert_eq!(pkt.src_port(), 8080);
    assert_eq!(pkt.dst_port(), 443);

    let bytes = pkt.into_bytes();
    let restored = Packet::from_bytes(bytes);
    assert_eq!(restored.src_port(), 8080);
    assert_eq!(restored.dst_port(), 443);

    println!("src_port = {}, dst_port = {}", restored.src_port(), restored.dst_port());
}