1个不稳定版本
0.1.1 | 2023年11月21日 |
---|
#407 在 压缩
170KB
72 行
vbe-rs
– 一个可变字节编码Rust库
此Rust库提供了可变字节编码(VBE)的功能,这是一种无损数据压缩形式,常用于以较小输出大小编码整数。这在数据库和索引等应用中特别有用,在这些应用中,许多数字可能很小,内存效率很重要。
用法
要在Rust项目中使用此库,请将以下内容添加到您的Cargo.toml
文件中
[dependencies]
vbe = { git = "https://github.com/bazzilic/vbe-rs", tag = "v0.1.1" }
然后,在您的Rust代码中导入vbe
模块
use vbe::{encode, decode};
encode
函数接受一个无符号整数的引用,并返回一个包含数字VBE表示形式的Vec<u8>
的引用
let number: u128 = 123456789;
let encoded = vbe::encode(&number);
decode
函数接受一个u8
迭代器(例如一个Vec<u8>
或一个切片)并返回一个Result<u128, String>
。如果输入是数字的有效VBE表示形式,则decode
将返回Ok(number)
。如果输入无效(例如,如果它在数字中间结束),则decode
将返回一个包含错误信息的Err
let encoded: Vec<u8> = vec![...]; // some VBE-encoded bytes
match vbe::decode(encoded.into_iter()) {
Ok(number) => println!("The number is {}", number),
Err(err) => println!("Failed to decode: {}", err),
}
请注意,decode
会修改并推进迭代器。这样,如果您在字节数组中有多个VBE编码的数字,您可以使用相同的迭代器继续调用“decode”来逐个解码数字。
测试
该库为encode
和decode
函数提供了单元测试。您可以使用命令cargo test
运行这些测试。
VBE 格式
贡献
欢迎向本项目贡献。请随意提交拉取请求或在该项目的GitHub页面上打开一个问题。
许可协议
本项目采用MIT许可协议。有关更多详细信息,请参阅LICENSE文件。