4 个版本
0.2.0 | 2019年7月13日 |
---|---|
0.1.2 | 2019年7月9日 |
0.1.1 | 2019年7月7日 |
0.1.0 | 2019年7月7日 |
#1351 in 编码
35KB
418 行
bin_io
bin_io
是一个受 nom
和其他解析器组合库极大启发的 crate。但 bin_io
与这些 crate 不同,因为它旨在同时提供读取和写入功能,且代码量更少。
用法
将 bin_io = "0.2"
添加到您的 Cargo.toml 文件中
0.2 版本的重大变化
在 0.2 版本中,bin_io
发生了巨大变化,现在在写入时使用引用,不再需要拥有副本。这意味着某些内容需要从上一个版本中进行更改,但一切应该仍然运行良好(需要一些代码更改,特别是 seq!
),所以请查看文档!
示例
use std::io::Cursor;
use bin_io::{ boilerplate, seq, read, write };
use bin_io::numbers::{ be_u8, be_u16 };
#[derive(Debug, PartialEq, Eq)]
struct Thing {
a: u8,
b: u16
}
boilerplate!(
fn thing_parser() -> Thing {
seq!(
Thing { a, b },
a: be_u8() =>
b: be_u16() =>
)
}
);
let mut vec = Vec::new();
let mut cursor = Cursor::new(vec);
let my_thing = Thing {
a: 0x10, b: 0x20
};
write(&mut cursor, &my_thing, thing_parser())
.unwrap();
cursor.set_position(0);
let other_thing = read(&mut cursor, thing_parser())
.unwrap();
assert_eq!(other_thing, my_thing);
依赖项
~165KB