pub trait FutureExt: Future {
    // Provided methods
    fn with_cancellation_token(
        self,
        cancellation_token: &CancellationToken,
    ) -> WithCancellationTokenFuture<'_, Self>
       where Self: Sized { ... }
    fn with_cancellation_token_owned(
        self,
        cancellation_token: CancellationToken,
    ) -> WithCancellationTokenFutureOwned<Self>
       where Self: Sized { ... }
}Expand description
A trait which contains a variety of convenient adapters and utilities for Futures.
Provided Methods§
Sourcefn with_cancellation_token(
    self,
    cancellation_token: &CancellationToken,
) -> WithCancellationTokenFuture<'_, Self>where
    Self: Sized,
 
fn with_cancellation_token(
    self,
    cancellation_token: &CancellationToken,
) -> WithCancellationTokenFuture<'_, Self>where
    Self: Sized,
Similar to CancellationToken::run_until_cancelled,
but with the advantage that it is easier to write fluent call chains,
and biased towards waiting for CancellationToken to complete.
§Fairness
Calling this on an already-cancelled token directly returns None.
For all subsequent polls, in case of concurrent completion and
cancellation, this is biased towards the future completion.
§Examples
use tokio::sync::oneshot;
use tokio_util::future::FutureExt;
use tokio_util::sync::CancellationToken;
let (_tx, rx) = oneshot::channel::<()>();
let token = CancellationToken::new();
let token_clone = token.clone();
tokio::spawn(async move {
    tokio::time::sleep(std::time::Duration::from_millis(10)).await;
    token.cancel();
});
assert!(rx.with_cancellation_token(&token_clone).await.is_none())Sourcefn with_cancellation_token_owned(
    self,
    cancellation_token: CancellationToken,
) -> WithCancellationTokenFutureOwned<Self>where
    Self: Sized,
 
fn with_cancellation_token_owned(
    self,
    cancellation_token: CancellationToken,
) -> WithCancellationTokenFutureOwned<Self>where
    Self: Sized,
Similar to CancellationToken::run_until_cancelled_owned,
but with the advantage that it is easier to write fluent call chains,
and biased towards waiting for CancellationToken to complete.
§Fairness
Calling this on an already-cancelled token directly returns None.
For all subsequent polls, in case of concurrent completion and
cancellation, this is biased towards the future completion.
§Examples
use tokio::sync::oneshot;
use tokio_util::future::FutureExt;
use tokio_util::sync::CancellationToken;
let (_tx, rx) = oneshot::channel::<()>();
let token = CancellationToken::new();
let token_clone = token.clone();
tokio::spawn(async move {
    tokio::time::sleep(std::time::Duration::from_millis(10)).await;
    token.cancel();
});
assert!(rx.with_cancellation_token_owned(token_clone).await.is_none())