pub trait FusedFuture: Future {
    fn is_terminated(&self) -> bool;
}
Expand description

A future which tracks whether or not the underlying future should no longer be polled.

is_terminated will return true if a future should no longer be polled. Usually, this state occurs after poll (or try_poll) returned Poll::Ready. However, is_terminated may also return true if a future has become inactive and can no longer make progress and should be ignored or dropped rather than being polled again.

Required Methods

Returns true if the underlying future should no longer be polled.

Implementations on Foreign Types

Implementors

impl<T> FusedFuture for Receiver<T>

impl<Fut: Future> FusedFuture for Fuse<Fut>

impl<F> FusedFuture for Flatten<F> where
    Flatten<F, <F as Future>::Output>: FusedFuture,
    F: Future

impl<Fut, F> FusedFuture for Map<Fut, F> where
    Map<Fut, F>: FusedFuture

impl<Fut, T> FusedFuture for MapInto<Fut, T> where
    Map<Fut, IntoFn<T>>: FusedFuture

impl<Fut1, Fut2, F> FusedFuture for Then<Fut1, Fut2, F> where
    Flatten<Map<Fut1, F>, Fut2>: FusedFuture

impl<Fut, F> FusedFuture for Inspect<Fut, F> where
    Map<Fut, InspectFn<F>>: FusedFuture

impl<Fut> FusedFuture for NeverError<Fut> where
    Map<Fut, OkFn<Never>>: FusedFuture

impl<Fut> FusedFuture for UnitError<Fut> where
    Map<Fut, OkFn<()>>: FusedFuture

impl<Fut> FusedFuture for Shared<Fut> where
    Fut: Future,
    Fut::Output: Clone

impl<Fut1, Fut2> FusedFuture for TryFlatten<Fut1, Fut2> where
    TryFlatten<Fut1, Fut2>: FusedFuture

impl<Fut1, Fut2, F> FusedFuture for AndThen<Fut1, Fut2, F> where
    TryFlatten<MapOk<Fut1, F>, Fut2>: FusedFuture

impl<Fut1, Fut2, F> FusedFuture for OrElse<Fut1, Fut2, F> where
    TryFlattenErr<MapErr<Fut1, F>, Fut2>: FusedFuture

impl<Fut, E> FusedFuture for ErrInto<Fut, E> where
    MapErr<Fut, IntoFn<E>>: FusedFuture

impl<Fut, E> FusedFuture for OkInto<Fut, E> where
    MapOk<Fut, IntoFn<E>>: FusedFuture

impl<Fut, F> FusedFuture for InspectOk<Fut, F> where
    Inspect<IntoFuture<Fut>, InspectOkFn<F>>: FusedFuture

impl<Fut, F> FusedFuture for InspectErr<Fut, F> where
    Inspect<IntoFuture<Fut>, InspectErrFn<F>>: FusedFuture

impl<Fut, F> FusedFuture for MapOk<Fut, F> where
    Map<IntoFuture<Fut>, MapOkFn<F>>: FusedFuture

impl<Fut, F> FusedFuture for MapErr<Fut, F> where
    Map<IntoFuture<Fut>, MapErrFn<F>>: FusedFuture

impl<Fut, F, G> FusedFuture for MapOkOrElse<Fut, F, G> where
    Map<IntoFuture<Fut>, ChainFn<MapOkFn<F>, ChainFn<MapErrFn<G>, MergeResultFn>>>: FusedFuture

impl<Fut, F> FusedFuture for UnwrapOrElse<Fut, F> where
    Map<IntoFuture<Fut>, UnwrapOrElseFn<F>>: FusedFuture

impl<F, R> FusedFuture for Lazy<F> where
    F: FnOnce(&mut Context<'_>) -> R, 

impl<T> FusedFuture for Pending<T>

impl<Fut: Future> FusedFuture for MaybeDone<Fut>

impl<Fut: TryFuture> FusedFuture for TryMaybeDone<Fut>

impl<T> FusedFuture for Ready<T>

impl<Fut1: FusedFuture, Fut2: FusedFuture> FusedFuture for Join<Fut1, Fut2>

impl<Fut1: FusedFuture, Fut2: FusedFuture, Fut3: FusedFuture> FusedFuture for Join3<Fut1, Fut2, Fut3>

impl<Fut1: FusedFuture, Fut2: FusedFuture, Fut3: FusedFuture, Fut4: FusedFuture> FusedFuture for Join4<Fut1, Fut2, Fut3, Fut4>

impl<Fut1: FusedFuture, Fut2: FusedFuture, Fut3: FusedFuture, Fut4: FusedFuture, Fut5: FusedFuture> FusedFuture for Join5<Fut1, Fut2, Fut3, Fut4, Fut5>

impl<A, B> FusedFuture for Select<A, B> where
    A: Future + Unpin,
    B: Future + Unpin

impl<A, B> FusedFuture for Either<A, B> where
    A: FusedFuture,
    B: FusedFuture<Output = A::Output>, 

impl<St, C> FusedFuture for Collect<St, C> where
    St: FusedStream,
    C: Default + Extend<St::Item>, 

impl<St, A, B, FromA, FromB> FusedFuture for Unzip<St, FromA, FromB> where
    St: FusedStream<Item = (A, B)>,
    FromA: Default + Extend<A>,
    FromB: Default + Extend<B>, 

impl<St> FusedFuture for Concat<St> where
    St: FusedStream,
    St::Item: Extend<<St::Item as IntoIterator>::Item> + IntoIterator + Default

impl<St, Fut, T, F> FusedFuture for Fold<St, Fut, T, F> where
    St: Stream,
    F: FnMut(T, St::Item) -> Fut,
    Fut: Future<Output = T>, 

impl<St, Fut, F> FusedFuture for ForEach<St, Fut, F> where
    St: FusedStream,
    F: FnMut(St::Item) -> Fut,
    Fut: Future<Output = ()>, 

impl<St: Stream + Unpin> FusedFuture for StreamFuture<St>

impl<St: ?Sized + FusedStream + Unpin> FusedFuture for Next<'_, St>

impl<St: ?Sized + FusedStream + Unpin> FusedFuture for SelectNextSome<'_, St>

impl<St: Stream> FusedFuture for Peek<'_, St>

impl<St: Stream> FusedFuture for PeekMut<'_, St>

impl<St, F> FusedFuture for NextIf<'_, St, F> where
    St: Stream,
    F: for<'a> FnOnce1<&'a St::Item, Output = bool>, 

impl<St, T> FusedFuture for NextIfEq<'_, St, T> where
    St: Stream,
    T: ?Sized,
    St::Item: PartialEq<T>, 

impl<St, Fut, F> FusedFuture for ForEachConcurrent<St, Fut, F> where
    St: Stream,
    F: FnMut(St::Item) -> Fut,
    Fut: Future<Output = ()>, 

impl<St: ?Sized + TryStream + Unpin + FusedStream> FusedFuture for TryNext<'_, St>

impl<St, C> FusedFuture for TryCollect<St, C> where
    St: TryStream + FusedStream,
    C: Default + Extend<St::Ok>, 

impl<St, Fut, T, F> FusedFuture for TryFold<St, Fut, T, F> where
    St: TryStream,
    F: FnMut(T, St::Ok) -> Fut,
    Fut: TryFuture<Ok = T, Error = St::Error>, 

impl<St, Fut, F> FusedFuture for TryForEachConcurrent<St, Fut, F> where
    St: TryStream,
    F: FnMut(St::Ok) -> Fut,
    Fut: Future<Output = Result<(), St::Error>>, 

impl<T: ?Sized> FusedFuture for MutexLockFuture<'_, T>