use modular_bitfield::prelude::*; #[derive(BitfieldSpecifier, Debug)] pub enum Status { Green, Yellow, Red, None } #[bitfield] #[derive(Debug)] pub struct DataPackage { status: Status, contents: B60, is_alive: bool, is_received: bool, } fn main() { let package = DataPackage::new() .with_status(Status::Green) .with_contents(0xC0DE_CAFE) .with_is_alive(true) .with_is_received(false); assert_eq!( format!("{:?}", package), "DataPackage { status: Green, contents: 3235826430, is_alive: true, is_received: false }", ); assert_eq!( format!("{:#X?}", package), "DataPackage {\n status: Green,\n contents: 0xC0DECAFE,\n is_alive: true,\n is_received: false,\n}", ); }