Skip to main content

Cancellation

Struct Cancellation 

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

A runtime-independent, cooperative cancellation signal.

Clones share a persistent cancellation state. Child signals receive ancestor cancellation, but cancelling a child does not cancel its parent or siblings. Dropping a signal does not request cancellation. Signals neither own tasks nor abort futures; callers decide how to respond and separately await completion.

use base_scheduler::{Cancellation, Cancelled};

let system = Cancellation::new();
let server = system.child();
assert!(server.cancel());
assert_eq!(server.check(), Err(Cancelled));
assert!(!system.is_cancelled());
assert!(system.cancel());

Implementations§

Source§

impl Cancellation

Source

pub fn new() -> Self

Create an independent, uncancelled signal.

Source

pub const fn never() -> Self

Create a signal which cannot be cancelled and requires no allocation. cancel always returns false and cancelled remains pending forever.

Source

pub const fn is_never(&self) -> bool

Whether this signal can never be cancelled. This is true for Self::never and its clones; its children are independently cancellable. Backends can omit cancellation registration for these signals.

Source

pub fn child(&self) -> Self

Create a signal cancelled by this signal or any of its ancestors. A child of an already-cancelled signal starts cancelled. A child of a never-cancelled signal is an independent, cancellable signal.

Source

pub fn cancel(&self) -> bool

Request cancellation of this signal and all its descendants. Returns true only for the first request on this signal. Repeated requests never escalate. Waiters are woken after the entire family lock is released. Concurrent observers may see propagation in progress, but all descendants are cancelled when this call returns. This does not wait for their work.

Source

pub fn is_cancelled(&self) -> bool

Whether cancellation has been requested.

Source

pub fn check(&self) -> Result<(), Cancelled>

Check for cancellation at an explicit cooperative cancellation point.

Source

pub async fn cancelled(&self)

Wait for cancellation using standard future polling and wakeups. This future is immediately ready if already cancelled. Dropping the wait unregisters its listener without cancelling the signal or other waiters. Listener storage is retained inline in the future, without a separate allocation.

Trait Implementations§

Source§

impl Clone for Cancellation

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Default for Cancellation

Source§

fn default() -> Self

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

impl<Value> Notify<Value> for Cancellation

Source§

fn notify(&self, _value: Value)

Deliver value to this destination. Implementations should return promptly.

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)
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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.