CancellationToken

Struct CancellationToken 

Source
pub struct CancellationToken { /* private fields */ }
Expand description

A thread-safe cancellation token that can be shared across threads.

This token allows cooperative cancellation by providing a way to signal cancellation and check cancellation status. The token can be cloned and shared across multiple threads, with all clones sharing the same cancellation state.

§Example

use reth_cli_util::cancellation::CancellationToken;
use std::{thread, time::Duration};

let token = CancellationToken::new();
let worker_token = token.clone();

let handle = thread::spawn(move || {
    while !worker_token.is_cancelled() {
        // Do work...
        thread::sleep(Duration::from_millis(100));
    }
});

// Cancel from main thread
token.cancel();
handle.join().unwrap();

Implementations§

Source§

impl CancellationToken

Source

pub fn new() -> Self

Creates a new cancellation token in the non-cancelled state.

Source

pub fn cancel(&self)

Signals cancellation to all holders of this token and its clones.

Once cancelled, the token cannot be reset. This operation is thread-safe and can be called multiple times without issue.

Source

pub fn is_cancelled(&self) -> bool

Checks whether cancellation has been requested.

Returns true if cancel has been called on this token or any of its clones.

Source

pub fn drop_guard(&self) -> CancellationGuard

Creates a guard that automatically cancels this token when dropped.

This is useful for ensuring cancellation happens when a scope exits, either normally or via panic.

§Example
use reth_cli_util::cancellation::CancellationToken;

let token = CancellationToken::new();
{
    let _guard = token.drop_guard();
    assert!(!token.is_cancelled());
    // Guard dropped here, triggering cancellation
}
assert!(token.is_cancelled());

Trait Implementations§

Source§

impl Clone for CancellationToken

Source§

fn clone(&self) -> CancellationToken

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CancellationToken

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CancellationToken

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes