# Async-scoped
Enables controlled spawning of non-`'static` futures when
using the [async-std](//github.com/async-rs/async-std) or
[tokio](//github.com/tokio-rs/tokio) executors.
## Motivation
Present executors (such as async-std, tokio, etc.) all
support spawning `'static` futures onto a thread-pool.
However, they do not support spawning futures with lifetime
smaller than `'static`.
While the future combinators such as `for_each_concurrent`
offer concurrency, they are bundled as a single `Task`
structure by the executor, and hence are not driven
parallelly. This can be seen when benchmarking a reasonable
number (> ~1K) of I/O futures, or a few CPU heavy futures.
## Usage
The API is meant to be a minimal wrapper around efficient
executors. Users **must use** either "use-async-std", or the
"use-tokio" feature gates, to obtain a usable scope type.
These gates provide `TokioScope` and `AsyncScope` that
support spawning, and blocking. See
[docs.rs](https://docs.rs/async-scoped) for detailed
documentation.
## License
Licensed under either of [Apache License, Version
2.0](//www.apache.org/licenses/LICENSE-2.0) or [MIT
license](//opensource.org/licenses/MIT) at your option.
Unless you explicitly state otherwise, any contribution
intentionally submitted for inclusion in this crate by you,
as defined in the Apache-2.0 license, shall be dual licensed
as above, without any additional terms or conditions.