Struct tokio_util::sync::CancellationToken [−][src]
pub struct CancellationToken { /* fields omitted */ }
Expand description
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]
pub fn new() -> CancellationToken
[src]Creates a new CancellationToken in the non-cancelled state.
pub fn child_token(&self) -> CancellationToken
[src]
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]
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]
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]
pub fn cancelled(&self) -> WaitForCancellationFuture<'_>ⓘNotable traits for WaitForCancellationFuture<'a>
impl<'a> Future for WaitForCancellationFuture<'a> type Output = ();
[src]Returns a Future
that gets fulfilled when cancellation is requested.
Trait Implementations
impl Clone for CancellationToken
[src]
impl Clone for CancellationToken
[src]impl Debug for CancellationToken
[src]
impl Debug for CancellationToken
[src]impl Default for CancellationToken
[src]
impl Default for CancellationToken
[src]fn default() -> CancellationToken
[src]
fn default() -> CancellationToken
[src]Returns the “default value” for a type. Read more
impl Drop 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> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more