adirector
asynchronous tokio task spawner with a limited size.
Full example:
use adirector::{Director, DirectorError};
#[tokio: main]
async fn main() -> Result<(), DirectorError> {
let mut director = Director::new(10);
let mut lines = BufReader::new(stdin()).lines();
while let Some(line) = lines.next_line().await.unwrap() {
director.spawn(async move {
println!("{}", line);
sleep(Duration::from_millis(50)).await;
}).await?; }
director.join_all().await
}
Implementation
A Semaphore is used to limit the count of tasks, and
a JoinSet to join all tasks at once.
Dependencies
- tokio with
rt
sync
features