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.
§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
BlockingExecutortrait. - futures_
support - Async support with a built-in thread pool.
- tokio_
support - Async support that uses
tokio::task::spawn_blockingand its I/O traits.
Structs§
- Archive
Entry Info - Path and uncompressed size for a single archive entry.
- Archive
Iterator - An iterator over the contents of an archive.
- Archive
Iterator Builder - Archive
Password - Passphrase used to decrypt encrypted archive entries.
- stat
- Re-export of [
libc::stat] socrate::statresolves uniformly across platforms — Windows has its own layout declared below.
Enums§
- Archive
Contents - 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
sourceas a reader. - list_
archive_ files_ with_ encoding - Get all files in a archive using
sourceas a reader. - stat⚠
- Re-export of [
libc::stat] socrate::statresolves uniformly across platforms — Windows has its own layout declared below. - uncompress_
archive - Uncompress an archive using
sourceas a reader anddestas the destination directory. - uncompress_
archive_ file - Uncompress a specific file from an archive. The
sourceis used as a reader, thetargetas a writer and thepathis 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
sourceis used as a reader, thetargetas a writer and thepathis the relative path for the file to be extracted from the archive. - uncompress_
archive_ with_ encoding - Uncompress an archive using
sourceas a reader anddestas the destination directory. - uncompress_
data - Uncompress a file using the
sourceneed as reader and thetargetas a writer.