#serialization #binary

无std barf

将任何输入转换为"barf"输出

1个稳定版本

1.0.0 2023年9月25日

#1268编码

MIT 许可证

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