27个版本
0.17.0 | 2024年5月23日 |
---|---|
0.16.0 | 2023年2月28日 |
0.15.1 | 2022年12月19日 |
0.15.0 | 2022年11月16日 |
0.1.2 |
|
#127 在 编码
35,701 每月下载量
用于 44 个crate(31个直接使用)
190KB
3K SLoC
Deku
声明性二进制读写
此crate为结构体和枚举提供了位级别的对称序列化/反序列化实现
为什么使用Deku
生产力:Deku将为您的类型生成对称的读写函数!避免编写冗余、容易出错的解析和写入代码,用于二进制结构体或网络头
使用方法
编译器支持:需要rustc 1.71+
[dependencies]
deku = "0.17"
no_std
[dependencies]
deku = { version = "0.17", default-features = false, features = ["alloc"] }
示例
将大端数据读入结构体,修改一个值,然后写入
use deku::prelude::*;
#[derive(Debug, PartialEq, DekuRead, DekuWrite)]
#[deku(endian = "big")]
struct DekuTest {
#[deku(bits = 4)]
field_a: u8,
#[deku(bits = 4)]
field_b: u8,
field_c: u16,
}
fn main() {
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;
let data_out = val.to_bytes().unwrap();
assert_eq!(vec![0b0110_1001, 0xC0, 0xFE], data_out);
}
变更日志
请参阅CHANGELOG.md
依赖项
~1.7–2.6MB
~56K SLoC