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 编码

MIT 许可证

35KB
418

bin_io

LICENSE Crates.io Version

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