8个版本
0.2.1 | 2020年2月7日 |
---|---|
0.2.0 | 2020年2月7日 |
0.1.5 | 2019年12月11日 |
0.1.3 | 2019年11月3日 |
#2119 in 编码
2,510 每月下载量
用于 20 个crate(13个直接使用)
19KB
225 代码行
binwrite
一个使用✨宏魔法帮助将结构体作为二进制数据写入的Rust crate。
用法
BinWrite使用一个derive宏来声明性地定义结构体的二进制写入方法。
基本示例
use binwrite::BinWrite;
#[derive(BinWrite)]
#[binwrite(little)]
struct Rect {
x: i32,
y: i32,
#[binwrite(big)]
size: (u16, u16),
}
fn main() {
let rects = vec![
Rect { x: 1, y: -2, size: (3, 4) },
Rect { x: 20, y: 4, size: (5, 7) }
];
let mut bytes = vec![];
rects.write(&mut bytes).unwrap();
assert_eq!(
bytes,
vec![
// [ x (little endian) ] [ y (little endian) ] [ size.0 ] [ size.1 ]
0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x04,
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07,
]
);
}
更多示例可以在BinWrite文档中找到。
依赖
~1.5MB
~35K SLoC