#zip #archive

zip_next

rust-version = "1.66.0" Library to support the reading and writing of zip files

25 releases (4 breaking)

0.10.3 Jun 18, 2023
0.10.2 Jun 8, 2023
0.10.0 May 31, 2023
0.9.2 May 30, 2023
0.6.13 Apr 30, 2023

#40 in Compression

Download history 69/week @ 2023-06-09 142/week @ 2023-06-16 112/week @ 2023-06-23 163/week @ 2023-06-30 82/week @ 2023-07-07 43/week @ 2023-07-14 57/week @ 2023-07-21 129/week @ 2023-07-28 78/week @ 2023-08-04 44/week @ 2023-08-11 160/week @ 2023-08-18 308/week @ 2023-08-25 553/week @ 2023-09-01 1160/week @ 2023-09-08 1064/week @ 2023-09-15 876/week @ 2023-09-22

3,719 downloads per month

MIT license

230KB
5K SLoC

zip_next

Build Status Crates.io version

Documentation

Info

A zip library for rust which supports reading and writing of simple ZIP files. Forked from https://crates.io/crates/zip to add more features and improve test coverage.

Supported compression formats:

  • stored (i.e. none)
  • deflate
  • bzip2
  • zstd

Currently unsupported zip extensions:

  • Encryption
  • Multi-disk

Usage

With all default features:

[dependencies]
zip_next = "0.10.3"

Without the default features:

[dependencies]
zip_next = { version = "0.10.3", default-features = false }

The features available are:

  • aes-crypto: Enables decryption of files which were encrypted with AES. Supports AE-1 and AE-2 methods.
  • deflate: Enables decompressing the deflate compression algorithm, which is the default for zip files.
  • deflate-miniz: Enables deflating files with the miniz_oxide library (used when compression quality is 0..=9).
  • deflate-zlib: Enables deflating files with the zlib library (used when compression quality is 0..=9).
  • deflate-zlib-ng: Enables deflating files with the zlib-ng library (used when compression quality is 0..=9). This is the fastest deflate implementation available.
  • deflate-zopfli: Enables deflating files with the zopfli library (used when compression quality is 10..=264). This is the most effective deflate implementation available.
  • bzip2: Enables the BZip2 compression algorithm.
  • time: Enables features using the time crate.
  • chrono: Enables converting last-modified zip_next::DateTime to and from chrono::NaiveDateTime.
  • zstd: Enables the Zstandard compression algorithm.

By default aes-crypto, deflate, deflate-zlib-ng, deflate-zopfli, bzip2, time and zstd are enabled.

MSRV

Our current Minimum Supported Rust Version is 1.66.0. When adding features, we will follow these guidelines:

  • We will always support the latest four minor Rust versions. This gives you a 6 month window to upgrade your compiler.
  • Any change to the MSRV will be accompanied with a minor version bump
    • While the crate is pre-1.0, this will be a change to the PATCH version.

Examples

See the examples directory for:

  • How to write a file to a zip.
  • How to write a directory of files to a zip (using walkdir).
  • How to extract a zip file.
  • How to extract a single file from a zip.
  • How to read a zip from the standard input.

Fuzzing

Fuzzing support is through cargo fuzz. To install cargo fuzz:

cargo install cargo-fuzz

To list fuzz targets:

cargo +nightly fuzz list

To start fuzzing zip extraction:

cargo +nightly fuzz run fuzz_read

To start fuzzing zip creation:

cargo +nightly fuzz run fuzz_write

Dependencies

~4–6MB
~97K SLoC