Struct stopper::Stopper[][src]

pub struct Stopper(_);

This struct provides a synchronized mechanism for canceling Futures and Streams.

Implementations

impl Stopper[src]

pub fn new() -> Self[src]

Initialize a stopper that is not yet stopped and that has zero registered wakers. Any clone of this stopper represents the same internal state. This is identical to Stopper::default()

pub fn stop(&self)[src]

Stop all futures and streams that have been registered to this Stopper or any clone representing the same initial stopper.

pub fn is_stopped(&self) -> bool[src]

Returns whether this stopper (or any clone of it) has been stopped.

Example

let stopper = stopper::Stopper::new();
assert!(!stopper.is_stopped());
stopper.stop();
assert!(stopper.is_stopped());

pub fn stop_stream<S: Stream>(&self, stream: S) -> StreamStopper<S>[src]

This function returns a new stream which will poll None (indicating a completed stream) when this Stopper has been stopped. The Stream’s Item is unchanged.

Example

use futures_lite::StreamExt;
let stopper = stopper::Stopper::new();
let mut stream = stopper.stop_stream(futures_lite::stream::repeat("infinite stream"));

std::thread::spawn(move || {
    std::thread::sleep(std::time::Duration::from_secs(1));
    stopper.stop();
});

while let Some(item) = stream.next().await {
    println!("{}", item);
}

pub fn stop_future<F: Future>(&self, future: F) -> FutureStopper<F>

Notable traits for FutureStopper<F>

impl<F: Future> Future for FutureStopper<F> type Output = Option<<F as Future>::Output>;
[src]

This function returns a Future which wraps the provided future and stops it when this Stopper has been stopped. Note that the Output of the returned future is wrapped with an Option. If the future resolves to None, that indicates that it was stopped instead of polling to completion.

Example

let stopper = stopper::Stopper::new();
let mut future = stopper.stop_future(std::future::pending::<()>());

std::thread::spawn(move || {
    std::thread::sleep(std::time::Duration::from_secs(1));
    stopper.stop();
});

assert_eq!(future.await, None);

Trait Implementations

impl Clone for Stopper[src]

impl Debug for Stopper[src]

impl Default for Stopper[src]

Auto Trait Implementations

impl RefUnwindSafe for Stopper

impl Send for Stopper

impl Sync for Stopper

impl Unpin for Stopper

impl UnwindSafe for Stopper

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.