Struct killswitch::KillSwitch

source ·
pub struct KillSwitch(/* private fields */);
Expand description

The KillSwitch is used both to signal termination and waiting for termination.

Implementations§

source§

impl KillSwitch

source

pub fn new() -> Self

Create a new kill switch object.

source

pub fn trigger(&self)

Mark killswitch as triggered and signal all waiting tasks that they should terminate.

source

pub fn wait(&self) -> WaitFuture

Wait for the killswitch to be triggered.

source

pub fn finalize(&self) -> FinalizedFuture

Return a Future that will return Ready once there are no more waiters waiting on this killswitch to be triggered.

The KillSwitch must be triggered before calling this function, or the returned future will return an error.

source

pub fn reset(&self)

Reset KillSwitch.

Care should be taken when using this. Generally speaking it should only be used immediately following a KillSwitch::finalize():

use killswitch::KillSwitch;

let ks = KillSwitch::default();
assert_eq!(ks.is_triggered(), false);

// Trigger kill switch
ks.trigger();
assert_eq!(ks.is_triggered(), true);
ks.finalize().await;
ks.reset();

// KillSwitch became untriggered again
assert_eq!(ks.is_triggered(), false);

Applications should prefer to call KillSwitch::finalize_reset() rather than calling finalize() and reset().

source

pub async fn finalize_reset(&self) -> Result<(), ()>

Finalize and reset KillSwitch.

Returns Err(()) if the KillSwitch wasn’t in triggered state.

source

pub fn is_triggered(&self) -> bool

Return a boolean indicating whether kill switch has been triggered.

Returns true if kill switch has been triggered. Returns false otherwise.

Trait Implementations§

source§

impl Clone for KillSwitch

source§

fn clone(&self) -> KillSwitch

Returns a copy 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 Default for KillSwitch

source§

fn default() -> Self

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

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.