4 个版本

0.1.3 2024年1月3日
0.1.2 2023年7月10日
0.1.1 2023年1月29日
0.1.0 2023年1月29日

#758 in 编码

每月47 次下载

MIT/Apache

22KB
539

archiv

archiv 是一个用于处理 .archiv 文件的库和 CLI。

.archiv 文件是一种简单的“文件格式”,由我不断重新发明。

该文件格式是

然后是头部,然后是重复的

  • length,8 字节,小端模式:后续数据的长度
  • data,数据

你可能以前听说过。

在此基础上,我们可以添加诸如

  • 流压缩
  • 项目压缩
  • 具有共享字典的项目压缩
  • 具有嵌入式字典的项目压缩
  • 并行处理压缩文件
  • 索引
  • 文档和共享术语

贡献

Github.

许可证

MIT / Apache-2


lib.rs:

use archiv::Compress;

let opts = archiv::CompressOptions::default();
let mut archiv = opts.stream_compress(io::stdout())?;
archiv.write_item(b"hello")?;
archiv.finish()?;
use archiv::Expand;

let opts = archiv::ExpandOptions::default();
let mut archiv = opts.stream(io::stdin().lock())?;
while let Some(mut item) = archiv.next_item()? {
    let mut s = String::new();
    item.read_to_string(&mut s)?;
    println!("{s}");
}

依赖关系

~4MB
~72K SLoC