Crates.io | task-group |
lib.rs | task-group |
version | 0.2.2 |
source | src |
created_at | 2021-03-29 22:44:55.119202 |
updated_at | 2022-03-03 21:54:46.472595 |
description | manage groups of tokio tasks |
homepage | |
repository | https://github.com/pchickey/task-group |
max_upload_size | |
id | 375385 |
size | 32,450 |
task-group
A small crate for managing groups of tokio tasks.
let (task_group, task_manager): (TaskGroup<Error>, TaskManager<_>) = TaskGroup::new();
task_group.clone().spawn("a task", async move {
task_group.spawn("b task", async move {
/* all kinds of things */
Ok(())
}).await.expect("spawned b");
Ok(())
}).await.expect("spawned a");
task_manager.await.expect("everyone successful");
A TaskGroup
is used to spawn a collection of tasks. The collection has two
properties:
if any task returns an error or panicks, all tasks are terminated.
if the TaskManager
returned by TaskGroup::new
is dropped, all tasks are
terminated.
A TaskManager
is used to manage a collection of tasks. There are two
things you can do with it:
TaskGroup
is
dropped (so no more tasks can be created), or when any task panicks or
returns an Err(E).tokio::time::timeout(duration, task_manager).await
, all tasks will be
terminated if the timeout occurs.See examples/
and the tests in src/lib.rs
for more examples.