6 个版本
0.2.7 | 2022年9月28日 |
---|---|
0.2.6 | 2022年9月26日 |
0.1.1 | 2022年9月1日 |
#600 in 压缩
21KB
319 行
Rust 结构和枚举压缩库。
一个用于压缩和解压缩结构的 Rust 库。注意,这个库仍在积极开发中,可能会发生破坏性更改。
描述
该库尚未完成,目前仅支持具有无符号整数字段的结构的压缩。更多功能将陆续推出。敬请期待。
安装
将以下内容放入您的 cargo.toml 文件中
[dependencies]
comprez_macro = 0.2.7
comprez = 0.2.7
示例
use comprez_macro::Comprezable;
use comprez::comprezable::Comprezable;
#[derive(Comprezable, Debug, Clone)]
struct MyStruct {
[#maxNum=10000] //Compulsory for each integer field except for u8
num1: u32,
[#maxNum=888]
num2: u16,
[#maxNum=100]
num3: i8, //use i8 instead of u8
other_struct: OtherStruct,
vec1: Vec<u8>,
vec2: Vec<OtherStruct>,
enum1: MyEnum::Num5(10)
}
#[derive(Comprezable, Debug, Clone)]
struct OtherStruct {
#[maxNum=1000000]
num4: u128,
}
#[derive(Comprezable, Debug, Clone)]
enum MyEnum {
#[maxNum=100]
Num5(u32),
Vec3(Vec<u8>)
}
fn main() {
let demo_data = Mystruct {
num1: 900,
num2: 100,
num3: 10,
other_struct: OtherStruct { num4: 200 },
vec1: vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
vec2: vec![OtherStruct{num4: 100}, OtherStruct{num4: 200}],
};
let compressed = demo_data.compress().unwrap();
let compressed_bytes = compressed.to_bytes();
let compressed_binaries = compressed.to_binaries();
let compressed = Compressed::from_bytes(compressed_bytes);
let compressed = Compressed::from_binaries(compressed_binaries);
let decompressed = Mystruct::decompressed(compressed).unwrap();
println!("{:?}", decompressed);
}
性能
待办事项!
特性
- 无符号
- 有符号
- Vec::u8
- 可压缩项的 Vec
- 枚举
- 异步读写
- 偶数
- 字符串
- 切片和向量
鸣谢
- u8 向量使用 LZ4 flex 库进行压缩。
要来杯咖啡吗?
依赖项
~1.5MB
~35K SLoC