diff --git a/book/src/08_futures/07_cancellation.md b/book/src/08_futures/07_cancellation.md index 4b98c26..557aa72 100644 --- a/book/src/08_futures/07_cancellation.md +++ b/book/src/08_futures/07_cancellation.md @@ -84,6 +84,20 @@ clean-up work. This can be by: The optimal choice is contextual. +## Cancelling spawned tasks + +When you spawn a task using `tokio::spawn`, you can no longer drop it; +it belongs to the runtime. +Nonetheless, you can use its `JoinHandle` to cancel it if needed: + +```rust +async fn run() { + let handle = tokio::spawn(/* some async task */); + // Cancel the spawned task + handle.abort(); +} +``` + ## Further reading - Be extremely careful when using `tokio`'s `select!` macro to "race" two different futures.