8 个版本 (4 个破坏性更新)
0.6.0 | 2023 年 12 月 24 日 |
---|---|
0.5.1 | 2023 年 12 月 4 日 |
0.4.2 | 2023 年 11 月 16 日 |
0.2.2 | 2021 年 7 月 18 日 |
0.1.0 | 2020 年 4 月 1 日 |
在 压缩 中排名 #56
每月下载量 1,377
在 proxy-rs 中使用
210KB
4.5K SLoC
autocompress-rs
自动从魔数字节选择合适的解码器或从文件扩展名选择编码器。此库还提供 I/O 线程池,以在后台线程中执行解压缩和压缩。
支持的文件格式
- Gzip
- Zlib(无法从魔数字节和文件扩展名建议格式)
- BZip2
- XZ
- Z-standard
功能标志
gzip
:支持 Gzip 格式bgzip
:支持 bgzip 格式bzip2
:支持 Bzip2 格式xz
:支持 XZ 格式zstd
:支持 Zstd 格式rayon
:使用 rayon 将压缩和解压缩过程卸载到另一个线程tokio
:使用 tokio 支持异步读取器和写入器tokio_fs:启用
autodetect_async_open
函数
示例
从文件读取
use std::io::prelude::*;
use autocompress::autodetect_open;
fn main() -> anyhow::Result<()> {
let mut reader = autodetect_open("testfiles/pg2701.txt.xz")?;
let mut buf = Vec::new();
reader.read_to_end(&mut buf)?;
Ok(())
}
写入文件
use std::io::prelude::*;
use autocompress::{autodetect_create, CompressionLevel};
fn main() -> anyhow::Result<()> {
let mut writer = autodetect_create("target/doc-index.xz", CompressionLevel::Default)?;
writer.write_all(&b"Hello, world\n"[..])?;
Ok(())
}
并行压缩文件
use std::io::prelude::*;
use autocompress::{autodetect_parallel_create, CompressionLevel};
fn main() -> anyhow::Result<()> {
let mut writer = autodetect_parallel_create("target/doc-index2.xz", CompressionLevel::Default)?;
writer.write_all(&b"Hello, world\n"[..])?;
Ok(())
}
依赖关系
~0.3–3.5MB
~64K SLoC