| Crates.io | task-group |
| lib.rs | task-group |
| version | 0.2.2 |
| created_at | 2021-03-29 22:44:55.119202+00 |
| updated_at | 2022-03-03 21:54:46.472595+00 |
| description | manage groups of tokio tasks |
| homepage | |
| repository | https://github.com/pchickey/task-group |
| max_upload_size | |
| id | 375385 |
| size | 32,450 |
task-groupA 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.