Skip to main content

Crate compress_tools

Crate compress_tools 

Source
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
macOS - x86_64build status
Windows - x86_64build status

§Dependencies

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.59.

§Features

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)?;

§Strict archive parsing

Archive-listing and archive-extraction entry points (list_archive_files, list_archive_entries, uncompress_archive, uncompress_archive_file, ArchiveIterator, and their async/_with_encoding siblings) no longer register libarchive’s “raw” format handler, so input that isn’t a real archive errors out instead of yielding a single data entry.

Use uncompress_data for decompressing a single stream (gzip, xz, …) — it continues to support raw input because that is its purpose. For streaming iteration that should accept arbitrary bytes, opt back in with ArchiveIteratorBuilder::raw_format. libarchive’s “mtree” handler remains enabled on all entry points; pass ArchiveIteratorBuilder::mtree_format(false) to the iterator if you need to reject mtree matches.

Modules§

async_support
Generic async support with which you can use you own thread pool by implementing the BlockingExecutor trait.
futures_support
Async support with a built-in thread pool.
tokio_support
Async support that uses tokio::task::spawn_blocking and its I/O traits.

Structs§

ArchiveEntryInfo
Path and uncompressed size for a single archive entry.
ArchiveIterator
An iterator over the contents of an archive.
ArchiveIteratorBuilder
ArchivePassword
Passphrase used to decrypt encrypted archive entries.
stat
Re-export of [libc::stat] so crate::stat resolves uniformly across platforms — Windows has its own layout declared below.

Enums§

ArchiveContents
The contents of an archive, yielded in order from the beginning to the end of the archive.
Error
Ownership
Determine the ownership behavior when unpacking the archive.

Functions§

list_archive_entries
Get entry metadata (path and uncompressed size) for every entry in an archive without extracting their contents.
list_archive_entries_with_encoding
Get entry metadata (path and uncompressed size) for every entry in an archive without extracting their contents.
list_archive_files
Get all files in a archive using source as a reader.
list_archive_files_with_encoding
Get all files in a archive using source as a reader.
stat
Re-export of [libc::stat] so crate::stat resolves uniformly across platforms — Windows has its own layout declared below.
uncompress_archive
Uncompress an archive using source as a reader and dest as the destination directory.
uncompress_archive_file
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_archive_file_with_encoding
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_archive_with_encoding
Uncompress an archive using source as a reader and dest as the destination directory.
uncompress_data
Uncompress a file using the source need as reader and the target as a writer.

Type Aliases§

DecodeCallback
Result