Crate arkiv

Source
Expand description

§Arkiv

Crates.io Docs.rs Crates.io Crates.io

Build Build Clippy

Arkiv is a convenience library to download, open, consult and extract archives of various format through a single consistent interface.

§Supported Formats

  • sample.zip (requires the zip feature).
  • sample.tar (requires the tar feature).
  • sample.tgz or sample.tar.gz (requires tar and gzip features).
  • sample.tar.xz (requires tar and xz features).
  • sample.tar.bz2 (requires tar and bzip features).
  • sample.tar.zstd or sample.tar.zst (requires tar and zstd features).

§Usage

use arkiv::{Result, Archive};

fn main() -> Result<()> {
    // open the archive from a local file
    let mut archive = arkiv::Archive::open("path/to/archive.tar.xz")?;

    // or download it over HTTP(S) - requires the `download` feature.
    #[cfg(feature="download")]
    let mut archive = {
        let url = "https://github.com/meuter/arkiv-rs/raw/main/tests/sample/sample.tar.zstd";
        arkiv::Archive::download(url)?
    };

    // iterate over entries
    for entry in archive.entries_iter()? {
        let entry = entry?;
        println!("{} {}", entry.size(), entry.path().display());
    }

    // extract the archive (perserves permission on unix targets)
    archive.unpack("/tmp/")?;

    Ok(())
}

Structs§

Archive
A collection of files, possibly compressed (e.g. tar, tar.gz, zip, …).
Downloader
Allows to download an archive file and open it.
Entry
A descriptor of one entry in an archive.

Enums§

Error
Error type used throughout this crate
Format
Available archive file formats.

Type Aliases§

ArchiveKindDeprecated
Available archive file formats.
Entries
An iterator over the entries of the archive
Result
Result type used throughout this crate