1个稳定版本
1.0.0 | 2023年9月25日 |
---|
#1268 在 编码
21KB
307 行
Barf
将任何输入转换为"barf"输出。
名称是对此crate作为反解析器目的的恶搞——与出色的nom crate相反。
Barf旨在与常见的数据类型(如LEB128编码的可变长度整数)进行一些集成。
当这些集成需要另一个crate时,它们将被锁定在功能标志后面。
这些集成包括
- 使用nano-leb128的"leb128"功能标志的LEB128。
- 使用"vint64"功能标志的vint64。
完整列表,请参阅Cargo.toml。
如果您想看到更多集成,请打开一个issue,或者最好是一个pull request。
您也可以自行实现Barfer
并在您的类型上创建扩展特性。
Barf可以在no_std环境中运行,但为了默认实现Barfer
的[Vec
]和String
,需要启用"alloc"功能标志。
use barf::Barfer;
// Vec<T> implements Barfer<T>.
let mut buf: Vec<u8> = Vec::new();
// Push 42_u8
buf.single(42);
// Push "test".bytes() iterator with `many`
buf.many("test".bytes());
// Push 1, 2, and 3
buf.slice([1, 2, 3]);
assert_eq!(
&buf[..],
[
42, // 42_u8
116, 101, 115, 116, // Bytes in "test"
1, 2, 3, // 1, 2, and 3
]
);
依赖关系
~17KB