Struct tokio_util::sync::CancellationToken [−][src]
pub struct CancellationToken { /* fields omitted */ }
A token which can be used to signal a cancellation request to one or more tasks.
Tasks can call CancellationToken::cancelled()
in order to
obtain a Future which will be resolved when cancellation is requested.
Cancellation can be requested through the CancellationToken::cancel
method.
Examples
use tokio::select; use tokio::scope::CancellationToken; #[tokio::main] async fn main() { let token = CancellationToken::new(); let cloned_token = token.clone(); let join_handle = tokio::spawn(async move { // Wait for either cancellation or a very long time select! { _ = cloned_token.cancelled() => { // The token was cancelled 5 } _ = tokio::time::sleep(std::time::Duration::from_secs(9999)) => { 99 } } }); tokio::spawn(async move { tokio::time::sleep(std::time::Duration::from_millis(10)).await; token.cancel(); }); assert_eq!(5, join_handle.await.unwrap()); }
Implementations
impl CancellationToken
[src]
impl CancellationToken
[src]pub fn new() -> CancellationToken
[src]
Creates a new CancellationToken in the non-cancelled state.
pub fn child_token(&self) -> CancellationToken
[src]
Creates a CancellationToken
which will get cancelled whenever the
current token gets cancelled.
If the current token is already cancelled, the child token will get returned in cancelled state.
Examples
use tokio::select; use tokio::scope::CancellationToken; #[tokio::main] async fn main() { let token = CancellationToken::new(); let child_token = token.child_token(); let join_handle = tokio::spawn(async move { // Wait for either cancellation or a very long time select! { _ = child_token.cancelled() => { // The token was cancelled 5 } _ = tokio::time::sleep(std::time::Duration::from_secs(9999)) => { 99 } } }); tokio::spawn(async move { tokio::time::sleep(std::time::Duration::from_millis(10)).await; token.cancel(); }); assert_eq!(5, join_handle.await.unwrap()); }
pub fn cancel(&self)
[src]
Cancel the CancellationToken
and all child tokens which had been
derived from it.
This will wake up all tasks which are waiting for cancellation.
pub fn is_cancelled(&self) -> bool
[src]
Returns true
if the CancellationToken
had been cancelled
pub fn cancelled(&self) -> WaitForCancellationFuture<'_>ⓘNotable traits for WaitForCancellationFuture<'a>
impl<'a> Future for WaitForCancellationFuture<'a> type Output = ();
[src]
Notable traits for WaitForCancellationFuture<'a>
impl<'a> Future for WaitForCancellationFuture<'a> type Output = ();
Returns a Future
that gets fulfilled when cancellation is requested.
Trait Implementations
impl Clone for CancellationToken
[src]
impl Clone for CancellationToken
[src]fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Default for CancellationToken
[src]
impl Default for CancellationToken
[src]fn default() -> CancellationToken
[src]
impl Drop for CancellationToken
[src]
impl Drop for CancellationToken
[src]