#tar-archive #tar #reader-writer #file-reader #encoding

async-tar

一个异步 TAR 文件读取器和编写器的 Rust 实现。此库目前不处理压缩,但抽象了所有 I/O 读取器和写入器。此外,还做了大量工作以确保整个内容不需要一次全部驻留在内存中。

8 个版本

0.4.2 2021 年 8 月 24 日
0.4.1 2021 年 7 月 29 日
0.3.0 2020 年 7 月 29 日
0.2.0 2020 年 7 月 26 日
0.1.1 2019 年 12 月 24 日

#73 in 压缩

Download history 2523/week @ 2024-03-14 2086/week @ 2024-03-21 2053/week @ 2024-03-28 2068/week @ 2024-04-04 2956/week @ 2024-04-11 3035/week @ 2024-04-18 3933/week @ 2024-04-25 4172/week @ 2024-05-02 3934/week @ 2024-05-09 3232/week @ 2024-05-16 3330/week @ 2024-05-23 3025/week @ 2024-05-30 3226/week @ 2024-06-06 4180/week @ 2024-06-13 3900/week @ 2024-06-20 2999/week @ 2024-06-27

14,833 每月下载量
用于 16 个 crate (10 直接)

MIT/Apache

150KB
3K SLoC

async-tar

异步 Rust 的 tar 归档读取/写入库。


基于伟大的 tar-rs

读取归档

use async_std::io::stdin;
use async_std::prelude::*;

use async_tar::Archive;

fn main() {
    async_std::task::block_on(async {
        let mut ar = Archive::new(stdin());
        let mut entries = ar.entries().unwrap();
        while let Some(file) = entries.next().await {
            let f = file.unwrap();
            println!("{}", f.path().unwrap().display());
        }
    });
}

写入归档

use async_std::fs::File;
use async_tar::Builder;

fn main() {
    async_std::task::block_on(async {
        let file = File::create("foo.tar").await.unwrap();
        let mut a = Builder::new(file);

        a.append_path("README.md").await.unwrap();
        a.append_file("lib.rs", &mut File::open("src/lib.rs").await.unwrap())
            .await
            .unwrap();
    });
}

MSRV

最小稳定 Rust 版本:1.51

MSRV 的提升伴随着小版本的提升

许可

本项目根据以下任一许可进行许可:

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在本项目中的贡献,都将根据上述条款双许可,而无需任何额外条款或条件。

依赖

~5–14MB
~183K SLoC