Struct futures_util::future::Abortable
source · pub struct Abortable<T> { /* private fields */ }
Expand description
A future/stream which can be remotely short-circuited using an AbortHandle
.
Implementations§
source§impl<T> Abortable<T>
impl<T> Abortable<T>
sourcepub fn new(task: T, reg: AbortRegistration) -> Self
pub fn new(task: T, reg: AbortRegistration) -> Self
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);
sourcepub fn is_aborted(&self) -> bool
pub fn is_aborted(&self) -> bool
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§
source§impl<St> Stream for Abortable<St>where
St: Stream,
impl<St> Stream for Abortable<St>where
St: Stream,
impl<'__pin, T> Unpin for Abortable<T>where
__Origin<'__pin, T>: Unpin,
Auto Trait Implementations§
impl<T> !RefUnwindSafe for Abortable<T>
impl<T> Send for Abortable<T>where
T: Send,
impl<T> Sync for Abortable<T>where
T: Sync,
impl<T> !UnwindSafe for Abortable<T>
Blanket Implementations§
source§impl<F> IntoFuture for Fwhere
F: Future,
impl<F> IntoFuture for Fwhere
F: Future,
§type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
source§fn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more