From: LukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com> Date: Thu, 16 May 2024 10:43:05 +0000 (+0200) Subject: Explain how to cancel a spawned future. X-Git-Url: http://git.euphorik.ch/index.cgi?a=commitdiff_plain;h=2f2a2a335bd88762f09a0d75fcbd02be2c1d8021;p=rust_exercises.git Explain how to cancel a spawned future. --- 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.