[][src]Struct tokio::prelude::stream::futures_unordered::FuturesUnordered

#[must_use = "streams do nothing unless polled"]
pub struct FuturesUnordered<F> { /* fields omitted */ }

An unbounded set of futures.

This "combinator" also serves a special function in this library, providing the ability to maintain a set of futures that and manage driving them all to completion.

Futures are pushed into this set and their realized values are yielded as they are ready. This structure is optimized to manage a large number of futures. Futures managed by FuturesUnordered will only be polled when they generate notifications. This reduces the required amount of work needed to coordinate large numbers of futures.

When a FuturesUnordered is first created, it does not contain any futures. Calling poll in this state will result in Ok(Async::Ready(None)) to be returned. Futures are submitted to the set using push; however, the future will not be polled at this point. FuturesUnordered will only poll managed futures when FuturesUnordered::poll is called. As such, it is important to call poll after pushing new futures.

If FuturesUnordered::poll returns Ok(Async::Ready(None)) this means that the set is currently not managing any futures. A future may be submitted to the set at a later time. At that point, a call to FuturesUnordered::poll will either return the future's resolved value or Ok(Async::NotReady) if the future has not yet completed.

Note that you can create a ready-made FuturesUnordered via the futures_unordered function in the stream module, or you can start with an empty set with the FuturesUnordered::new constructor.

Methods

impl<T> FuturesUnordered<T> where
    T: Future
[src]

pub fn new() -> FuturesUnordered<T>[src]

Constructs a new, empty FuturesUnordered

The returned FuturesUnordered does not contain any futures and, in this state, FuturesUnordered::poll will return Ok(Async::Ready(None)).

impl<T> FuturesUnordered<T>[src]

pub fn len(&self) -> usize[src]

Returns the number of futures contained in the set.

This represents the total number of in-flight futures.

pub fn is_empty(&self) -> bool[src]

Returns true if the set contains no futures

pub fn push(&mut self, future: T)[src]

Push a future into the set.

This function submits the given future to the set for managing. This function will not call poll on the submitted future. The caller must ensure that FuturesUnordered::poll is called in order to receive task notifications.

Important traits for IterMut<'a, F>
pub fn iter_mut(&mut self) -> IterMut<T>[src]

Returns an iterator that allows modifying each future in the set.

Trait Implementations

impl<T> Sync for FuturesUnordered<T> where
    T: Sync
[src]

impl<T> Stream for FuturesUnordered<T> where
    T: Future
[src]

type Item = <T as Future>::Item

The type of item this stream will yield on success.

type Error = <T as Future>::Error

The type of error this stream may generate.

impl<T> Debug for FuturesUnordered<T> where
    T: Debug
[src]

impl<T> Send for FuturesUnordered<T> where
    T: Send
[src]

impl<T> Drop for FuturesUnordered<T>[src]

impl<T> Default for FuturesUnordered<T> where
    T: Future
[src]

impl<F> FromIterator<F> for FuturesUnordered<F> where
    F: Future
[src]

Auto Trait Implementations

impl<F> Unpin for FuturesUnordered<F>

impl<F> !UnwindSafe for FuturesUnordered<F>

impl<F> !RefUnwindSafe for FuturesUnordered<F>

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]