# futures-util

Common utilities and extension traits for the futures-rs library.

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
futures-util = "0.3"
```

The current `futures-util` requires Rust 1.45 or later.

## License

Licensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or
[MIT license](LICENSE-MIT) at your option.

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.
