Crate compress_tools[][src]

Expand description

The compress-tools crate aims to provide a convenient and easy to use set of methods which builds on top of libarchive exposing a small set of it’s functionalities.

PlatformBuild Status
Linux - x86_64build status
Linux - AArch64build status
Linux - ARMv7build status
macOS - x86_64build status
Windows - x86_64build status


You must have libarchive, 3.2.0 or newer, properly installed on your system in order to use this. If building on *nix and Windows GNU systems, pkg-config is used to locate the libarchive; on Windows MSVC, vcpkg will be used to locating the libarchive.

The minimum supported Rust version is 1.46.


This crate is capable of extracting:

  • compressed files
  • archive files
  • single file from an archive

For example, to extract an archive file it is as simple as:

use compress_tools::*;
use std::fs::File;
use std::path::Path;

let mut source = File::open("tree.tar.gz")?;
let dest = Path::new("/tmp/dest");

uncompress_archive(&mut source, &dest, Ownership::Preserve)?;


Generic async support with which you can use you own thread pool by implementing the BlockingExecutor trait.

Async support with a built-in thread pool.

Async support that uses tokio::task::spawn_blocking and its I/O traits.


An iterator over the contents of an archive.


The contents of an archive, yielded in order from the beginning to the end of the archive.

Determine the ownership behavior when unpacking the archive.


Get all files in a archive using source as a reader.

Uncompress an archive using source as a reader and dest as the destination directory.

Uncompress a specific file from an archive. The source is used as a reader, the target as a writer and the path is the relative path for the file to be extracted from the archive.

Uncompress a file using the source need as reader and the target as a writer.

Type Definitions