20 个版本 (7 个稳定版)

3.0.2 2024年5月4日
2.0.1 2024年4月12日
1.3.0 2024年3月24日
1.2.0 2023年10月29日
0.3.0 2022年11月30日

#104 in 压缩

Download history 229/week @ 2024-04-28 91/week @ 2024-05-05 3/week @ 2024-05-12 23/week @ 2024-05-19 1/week @ 2024-06-02 5/week @ 2024-06-09 10/week @ 2024-06-16 9/week @ 2024-07-07 32/week @ 2024-07-21 41/week @ 2024-07-28 1/week @ 2024-08-11

每月74次下载
用于 rfmp

MIT 许可证

54KB
1K SLoC

crates.io crates.io

mtzip

MTZIP(代表多线程ZIP)是一个在利用多线程所有可用性能的同时创建 zip 存档的库。线程数量可以被用户限制或自动检测。

示例用法

use mtzip::ZipArchive;

// Creating the zipper that holds data and handles compression
let mut zipper = ZipArchive::new();

// Adding a file from filesystem
zipper.add_file_from_fs("input/test_text_file.txt", "test_text_file.txt");

// Adding a file from a byte array
zipper.add_file_from_memory(b"Hello, world!", "hello_world.txt");

// Adding a directory and a file to it
zipper.add_directory("test_dir");
// And adding a file to it
zipper.add_file_from_fs("input/file_that_goes_to_a_dir.txt", "test_dir/file_that_goes_to_a_dir.txt");

// Writing to a file
// First, open the file
let mut file = File::create("output.zip").unwrap();
// Then, write to it
zipper.write(&mut file); // Amount of threads is chosen automatically

线程数量也由要压缩的文件数量决定。由于 Deflate 压缩不能多线程,多线程是通过单独压缩文件来实现的。这意味着如果您有 12 个线程可用,但只有 6 个文件要添加到存档中,您将只使用 6 个线程。

Rayon

这个crate也支持rayon进行线程管理和并行化,通过启用rayon功能实现。

依赖项

~265–720KB
~13K SLoC