Struct tokio_util::sync::CancellationToken [−][src]
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][−]
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 Debug for CancellationToken
[src][+]
impl Default for CancellationToken
[src][+]
impl Drop for CancellationToken
[src][+]
impl Send for CancellationToken
[src]
impl Sync for CancellationToken
[src]
Auto Trait Implementations
impl RefUnwindSafe for CancellationToken
impl Unpin for CancellationToken
impl UnwindSafe for CancellationToken
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,