#zip #zip-archive

vfs-zip

vfs-zip: Virtual FileSystem abstractions for ZIP files

3 unstable releases

0.2.1 Sep 9, 2020
0.2.0 Sep 4, 2020
0.1.0 Sep 1, 2020

#1333 in Filesystem

Apache-2.0 OR MIT

29KB
393 lines

vfs-zip: Virtual FileSystem abstractions for ZIP files

GitHub crates.io docs.rs %23![forbid(unsafe_code)] rust: 1.34.0+ License

Currently this just bridges vfs and zip. Alternate VFS abstractions may be added in the future. Caveats:

  1. vfs 0.4 lacks async interfaces, making it useless for browser targets.
  2. zip isn't amenable to re-entrant access. This leads to Mutex spam, and forces open_file to copy/read the whole file up front.

Features

Feature Description
default
vfs04 vfs = "0.4.x" interop
zip-deflate "zip/deflate" (de)compression support
zip-bzip2 "zip/bzip2" (de)compression support
(opt-in)
zip-time "zip/time" write timestamps when creating zip archives

Unsafe Code

Crate uses #![forbid(unsafe_code)]. However, indirect dependencies do contain some unsafe - including, but perhaps not limited to:

crate version
bzip2 0.3.3
crc32fast 1.2.0
flat2 1.0.14
syn 1.0.39
time 0.1.44
winapi 0.3.9

MSRV (Minimum Supported Rust Version)

Currently 1.34.0...ish.

  • zip 0.5.6 has a MSRV of 1.34.0. However, zip's MSRV policy allows 0.5.7 to bump this, and vfs-zip does not pin zip to this version.
  • vfs 0.4.0 has a MSRV of 1.32.0. However, it has no clear policy for when MSRV can be bumped.
  • Not all indirect dependencies have MSRV policies. For example, I've already pinned flate2 to "<1.0.16" since "1.0.16" broke 1.34.0 with "extern crate alloc;"

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~1.4–2.5MB
~46K SLoC