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
.
AbortRegistration
s 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:
abort
was called after the task had completed.abort
was called while the task was being polled - the task may still be running and will not be stopped untilpoll
returns.
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?