# async_zip_futures
[](https://crates.io/crates/async_zip_futures)
[](https://crates.io/crates/async_zip_futures)
[](https://docs.rs/async_zip_futures/)
[](https://github.com/bancek/rs-async-zip-futures/actions?query=branch%3Amain)
[](https://github.com/bancek/rs-async-zip-futures/blob/main/LICENSE)
An asynchronous ZIP archive reading/writing crate powered by [`futures-rs`](https://crates.io/crates/futures).
Forked from [`rs-async-zip`](https://github.com/Majored/rs-async-zip). `tokio` was replaced with `futures-rs`.
## Features
- Support for Stored compression method.
- Support for writing streams using data descriptors.
- Initial support for ZIP64 writing.
- Aims for reasonable [specification](https://github.com/bancek/rs-async-zip-futures/blob/main/SPECIFICATION.md) compliance.
## Installation & Basic Usage
```toml
[dependencies]
async_zip_futures = { version = "0.0.12", features = ["full"] }
```
A (soon to be) extensive list of [examples](https://github.com/bancek/rs-async-zip-futures/tree/main/examples) can be found under the `/examples` directory.
### Feature Flags
- `full` - Enables all below features.
- `chrono` - Enables support for parsing dates via `chrono`.
### Writing
```rust
use async_zip_futures::{Compression, ZipEntryBuilder, write::ZipFileWriter, error::ZipError};
use futures::AsyncWriteExt;
use tokio::fs::File;
use tokio_util::compat::TokioAsyncReadCompatExt;
...
let mut file = File::create("foo.zip").await.unwrap().compat();
let mut writer = ZipFileWriter::new(&mut file);
let data = b"This is an example file.";
let builder = ZipEntryBuilder::new(String::from("bar.txt"), Compression::Stored);
let mut entry_writer = writer.write_entry_stream(builder).await.unwrap();
entry_writer.write_all(data).await.unwrap();
entry_writer.close().await.unwrap();
writer.close().await.unwrap();
```