29个版本 (7个稳定版)
1.1.0 | 2024年7月7日 |
---|---|
1.0.5 | 2024年3月16日 |
1.0.4 | 2022年10月26日 |
1.0.3 | 2022年3月23日 |
0.4.1 | 2020年7月31日 |
#21 在 压缩
9,554 每月下载量
在 16 个crate中使用了 (11直接使用)
440KB
8K SLoC
功能齐全的liblz4对Rust的绑定
关于
LZ4压缩算法的Rust API。
- 支持几乎所有的liblz4特性
- 除了liblz4外没有其他依赖
- 在Windows / macOS / Linux上进行了测试
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
lzzzz = "1.0.3"
功能
- LZ4
- 压缩(块 / 流式处理)
- 解压缩(块 / 流式处理)
- 部分解压缩
- 自定义字典
- LZ4_HC
- 压缩(块 / 流式处理)
- 部分压缩
- 自定义字典
- LZ4F
- 压缩
- 解压缩
- 自定义字典
- 流式I/O(
Read
/BufRead
/Write
)
示例
块模式
use lzzzz::{lz4, lz4_hc, lz4f};
let data = b"The quick brown fox jumps over the lazy dog.";
// LZ4 compression
let mut comp = Vec::new();
lz4::compress_to_vec(data, &mut comp, lz4::ACC_LEVEL_DEFAULT)?;
// LZ4_HC compression
let mut comp = Vec::new();
lz4_hc::compress_to_vec(data, &mut comp, lz4_hc::CLEVEL_DEFAULT)?;
// LZ4/LZ4_HC decompression
let mut decomp = vec![0; data.len()];
lz4::decompress(&comp, &mut decomp)?;
// LZ4F compression
let prefs = lz4f::Preferences::default();
let mut comp = Vec::new();
lz4f::compress_to_vec(data, &mut comp, &prefs)?;
// LZ4F decompression
let mut decomp = Vec::new();
lz4f::decompress_to_vec(&comp, &mut decomp)?;
流模式
use lzzzz::{lz4, lz4_hc};
let data = b"The quick brown fox jumps over the lazy dog.";
// LZ4 compression
let mut comp = lz4::Compressor::new()?;
let mut buf = Vec::new();
comp.next_to_vec(data, &mut buf, lz4::ACC_LEVEL_DEFAULT)?;
// LZ4_HC compression
let mut comp = lz4_hc::Compressor::new()?;
let mut buf = Vec::new();
comp.next_to_vec(data, &mut buf)?;
// LZ4/LZ4_HC decompression
let mut decomp = lz4::Decompressor::new()?;
let result = decomp.next(&data, data.len())?;
use lzzzz::lz4f::{WriteCompressor, ReadDecompressor, Preferences};
use std::{fs::File, io::prelude::*};
// LZ4F Write-based compression
let mut f = File::create("foo.lz4")?;
let mut w = WriteCompressor::new(&mut f, Preferences::default())?;
w.write_all(b"Hello world!")?;
// LZ4F Read-based decompression
let mut f = File::open("foo.lz4")?;
let mut r = ReadDecompressor::new(&mut f)?;
let mut buf = Vec::new();
r.read_to_end(&mut buf)?;