9 unstable releases (3 breaking)
0.6.1 | Feb 14, 2021 |
---|---|
0.6.0 | Jan 2, 2021 |
0.5.1 | Nov 16, 2020 |
0.4.1 | Jan 16, 2020 |
0.2.0 |
|
#189 in Asynchronous
193 downloads per month
Used in reverie-zk
35KB
597 lines
Async-scoped
Enables controlled spawning of non-'static
futures when
using the async-std or
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 for detailed
documentation.
License
Licensed under either of Apache License, Version 2.0 or MIT license 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.
Dependencies
~1.2–3.5MB
~71K SLoC