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 压缩
每月74次下载
用于 rfmp
54KB
1K SLoC
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