Struct futures_util::future::Abortable [−][src]
#[must_use = "futures/streams do nothing unless you poll them"]pub struct Abortable<T> { /* fields omitted */ }
A future/stream which can be remotely short-circuited using an AbortHandle.
Implementations
impl<T> Abortable<T>[src]
impl<T> Abortable<T>[src]pub fn new(task: T, reg: AbortRegistration) -> Self[src]
Creates a new Abortable future/stream using an existing AbortRegistration.
AbortRegistrations can be acquired through AbortHandle::new.
When abort is called on the handle tied to reg or if abort has
already been called, the future/stream will complete immediately without making
any further progress.
Examples:
Usage with futures:
use futures::future::{Abortable, AbortHandle, Aborted}; let (abort_handle, abort_registration) = AbortHandle::new_pair(); let future = Abortable::new(async { 2 }, abort_registration); abort_handle.abort(); assert_eq!(future.await, Err(Aborted));
Usage with streams:
let (abort_handle, abort_registration) = AbortHandle::new_pair(); let mut stream = Abortable::new(stream::iter(vec![1, 2, 3]), abort_registration); abort_handle.abort(); assert_eq!(stream.next().await, None);
pub fn is_aborted(&self) -> bool[src]
Checks whether the task has been aborted. Note that all this
method indicates is whether AbortHandle::abort was called.
This means that it will return true even if:
abortwas called after the task had completed.abortwas called while the task was being polled - the task may still be running and will not be stopped untilpollreturns.
Trait Implementations
impl<'__pin, T> Unpin for Abortable<T> where
__Origin<'__pin, T>: Unpin, [src]
__Origin<'__pin, T>: Unpin,
Auto Trait Implementations
impl<T> !RefUnwindSafe for Abortable<T>
impl<T> Send for Abortable<T> where
T: Send,
T: Send,
impl<T> Sync for Abortable<T> where
T: Sync,
T: Sync,
impl<T> !UnwindSafe for Abortable<T>
Blanket Implementations
impl<F> IntoFuture for F where
F: Future, [src]
impl<F> IntoFuture for F where
F: Future, [src]type Output = <F as Future>::Output
🔬 This is a nightly-only experimental API. (
into_future)The output that the future will produce on completion.
type Future = F
🔬 This is a nightly-only experimental API. (
into_future)Which kind of future are we turning this into?