Deku:在Rust中进行声明式二进制读写

2020-12-06 19:13:59

生产力:Deku将为您的类型生成对称的读取器/写入器函数!避免编写冗余,容易出错的解析程序以及为二进制结构或网络标头编写代码的要求 使用deku :: prelude :: *;#[derive(Debug,PartialEq,DekuRead,DekuWrite)]#[deku(endian =" big")] struct DekuTest {#[deku(bits =&#34 ; 4")] field_a:u8,#[deku(bits =" 4")] field_b:u8,field_c:u16,} let data:Vec< u8 = vec![0b0110_1001,0xBE,0xEF]; let(_rest,mut val)= DekuTest :: from_bytes((data。as_ref(),0))。 unwrap(); assert_eq!(DekuTest {field_a:0b0110,field_b:0b1001,field_c:0xBEEF,},val); val.field_c = 0xC0FE; 让data_out = val。 to_bytes()。 unwrap(); assert_eq!(vec![0b0110_1001,0xC0,0xFE],data_out);