Struct futures_util::stream::Abortable
source · [−]pub struct Abortable<T> { /* private fields */ }
Expand description
A future/stream which can be remotely short-circuited using an AbortHandle
.
Implementations
sourceimpl<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
sourceimpl<T: Clone> Clone for Abortable<T>
impl<T: Clone> Clone for Abortable<T>
sourcefn clone(&self) -> Abortable<T>ⓘNotable traits for Abortable<Fut>impl<Fut> Future for Abortable<Fut> where
Fut: Future, type Output = Result<Fut::Output, Aborted>;
fn clone(&self) -> Abortable<T>ⓘNotable traits for Abortable<Fut>impl<Fut> Future for Abortable<Fut> where
Fut: Future, type Output = Result<Fut::Output, Aborted>;
Fut: Future, type Output = Result<Fut::Output, Aborted>;
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<F> IntoFuture for F where
F: Future,
impl<F> IntoFuture for F where
F: Future,
type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
sourcefn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more