6 个版本
0.4.0 |
|
---|---|
0.3.5 | 2023年2月27日 |
0.2.3 | 2023年2月19日 |
0.2.1 | 2023年1月26日 |
0.1.0 | 2023年1月22日 |
#190 in 压缩
用于 comic-repack
30KB
615 代码行
archive-reader
ArchiveReader
是一个库,它封装了 libarchive 的部分读取函数。它提供了对列文件名和读取归档中给定文件的 rustic 接口。
[dependencies]
archive-reader = "0.3"
示例
use archive_reader::Archive;
use archive_reader::error::Result;
fn main() -> Result<()> {
let mut archive = Archive::open("some_archive.zip");
let file_names = archive
.block_size(1024 * 1024)
.list_file_names()?
.collect::<Result<Vec<_>>>()?;
let mut content = vec![];
let _ = archive.read_file(&file_names[0], &mut content)?;
println!("content={:?}", content);
Ok(())
}
特性
lending_iter
- 启用LendingIterator
实现,避免为read_file_by_block
函数进行堆分配。
入门指南
本节介绍了如何编译此项目
先决条件
- Rust 1.66.0(可能兼容较低版本,但我使用了 1.66.0)
- Cargo
- Git
- libc
- libarchive >= 3.2.0
- 使用命令
pkg-config ----cflags libarchive 'libarchive >= 3.2.0'
进行检查
- 使用命令
编译
cd SOME_DIR
git clone [email protected]:YaxinCheng/archive-reader.git
cd archive-reader
cargo build --release
依赖项
~0.4–1MB
~22K SLoC