Skip to content

A scope for async_std and tokio to spawn non-static !Send futures

Notifications You must be signed in to change notification settings

rinit-org/async-scoped-local

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Async-scoped

Enables controlled spawning of non-'static and local 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.

About

A scope for async_std and tokio to spawn non-static !Send futures

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%