[−][src]Struct futures_util::stream::FuturesUnordered
A set of futures which may complete in any order.
This structure is optimized to manage a large number of futures.
Futures managed by FuturesUnordered
will only be polled when they
generate wake-up notifications. This reduces the required amount of work
needed to poll large numbers of futures.
FuturesUnordered
can be filled by collect
ing an
iterator of futures into a FuturesUnordered
, or by
push
ing futures onto an existing
FuturesUnordered
. When new futures are added,
poll_next
must be called in order to begin receiving
wake-ups for new futures.
Note that you can create a ready-made FuturesUnordered
via the
collect
method, or you can start with an empty set
with the FuturesUnordered::new
constructor.
This type is only available when the std
or alloc
feature of this
library is activated, and it is activated by default.
Methods
impl<Fut: Future> FuturesUnordered<Fut>
[src]
pub fn new() -> FuturesUnordered<Fut>
[src]
Constructs a new, empty FuturesUnordered
.
The returned FuturesUnordered
does not contain any futures.
In this state, FuturesUnordered::poll_next
will
return Poll::Ready(None)
.
impl<Fut> FuturesUnordered<Fut>
[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: Fut)
[src]
Push a future into the set.
This method adds the given future to the set. This method will not
call poll
on the submitted future. The caller must
ensure that FuturesUnordered::poll_next
is called
in order to receive wake-up notifications for the given future.
ⓘImportant traits for IterMut<'a, Fut>pub fn iter_mut(&mut self) -> IterMut<Fut> where
Fut: Unpin,
[src]
Fut: Unpin,
Returns an iterator that allows modifying each future in the set.
ⓘImportant traits for IterPinMut<'a, Fut>pub fn iter_pin_mut(self: Pin<&mut Self>) -> IterPinMut<Fut>
[src]
Returns an iterator that allows modifying each future in the set.
Trait Implementations
impl<Fut: Send> Send for FuturesUnordered<Fut>
[src]
impl<Fut> Drop for FuturesUnordered<Fut>
[src]
impl<Fut> Unpin for FuturesUnordered<Fut>
[src]
impl<Fut: Future> Default for FuturesUnordered<Fut>
[src]
fn default() -> FuturesUnordered<Fut>
[src]
impl<Fut: Sync> Sync for FuturesUnordered<Fut>
[src]
impl<Fut> Debug for FuturesUnordered<Fut>
[src]
impl<Fut: Future> FromIterator<Fut> for FuturesUnordered<Fut>
[src]
fn from_iter<I>(iter: I) -> Self where
I: IntoIterator<Item = Fut>,
[src]
I: IntoIterator<Item = Fut>,
impl<Fut: Future> Stream for FuturesUnordered<Fut>
[src]
type Item = Fut::Output
Values yielded by the stream.
fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>>
[src]
fn size_hint(&self) -> (usize, Option<usize>)
[src]
impl<Fut: Future> FusedStream for FuturesUnordered<Fut>
[src]
fn is_terminated(&self) -> bool
[src]
impl<'_> Spawn for FuturesUnordered<FutureObj<'_, ()>>
[src]
fn spawn_obj(
&mut self,
future_obj: FutureObj<'static, ()>
) -> Result<(), SpawnError>
[src]
&mut self,
future_obj: FutureObj<'static, ()>
) -> Result<(), SpawnError>
fn status(&self) -> Result<(), SpawnError>
[src]
impl<'_> LocalSpawn for FuturesUnordered<LocalFutureObj<'_, ()>>
[src]
fn spawn_local_obj(
&mut self,
future_obj: LocalFutureObj<'static, ()>
) -> Result<(), SpawnError>
[src]
&mut self,
future_obj: LocalFutureObj<'static, ()>
) -> Result<(), SpawnError>
fn status_local(&self) -> Result<(), SpawnError>
[src]
Auto Trait Implementations
impl<Fut> !UnwindSafe for FuturesUnordered<Fut>
impl<Fut> !RefUnwindSafe for FuturesUnordered<Fut>
Blanket Implementations
impl<T> StreamExt for T where
T: Stream + ?Sized,
[src]
T: Stream + ?Sized,
ⓘImportant traits for Next<'_, St>fn next(&mut self) -> Next<Self> where
Self: Unpin,
[src]
Self: Unpin,
ⓘImportant traits for StreamFuture<St>fn into_future(self) -> StreamFuture<Self> where
Self: Sized + Unpin,
[src]
Self: Sized + Unpin,
fn map<T, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> T,
Self: Sized,
[src]
F: FnMut(Self::Item) -> T,
Self: Sized,
fn enumerate(self) -> Enumerate<Self> where
Self: Sized,
[src]
Self: Sized,
fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F> where
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
[src]
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
fn filter_map<Fut, T, F>(self, f: F) -> FilterMap<Self, Fut, F> where
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = Option<T>>,
Self: Sized,
[src]
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = Option<T>>,
Self: Sized,
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnMut(Self::Item) -> Fut,
Fut: Future,
Self: Sized,
[src]
F: FnMut(Self::Item) -> Fut,
Fut: Future,
Self: Sized,
ⓘImportant traits for Collect<St, C>fn collect<C: Default + Extend<Self::Item>>(self) -> Collect<Self, C> where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for Concat<St>fn concat(self) -> Concat<Self> where
Self: Sized,
Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,
[src]
Self: Sized,
Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,
ⓘImportant traits for Fold<St, Fut, T, F>fn fold<T, Fut, F>(self, init: T, f: F) -> Fold<Self, Fut, T, F> where
F: FnMut(T, Self::Item) -> Fut,
Fut: Future<Output = T>,
Self: Sized,
[src]
F: FnMut(T, Self::Item) -> Fut,
Fut: Future<Output = T>,
Self: Sized,
fn flatten(self) -> Flatten<Self> where
Self::Item: Stream,
Self: Sized,
[src]
Self::Item: Stream,
Self: Sized,
fn skip_while<Fut, F>(self, f: F) -> SkipWhile<Self, Fut, F> where
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
[src]
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
fn take_while<Fut, F>(self, f: F) -> TakeWhile<Self, Fut, F> where
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
[src]
F: FnMut(&Self::Item) -> Fut,
Fut: Future<Output = bool>,
Self: Sized,
ⓘImportant traits for ForEach<St, Fut, F>fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F> where
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = ()>,
Self: Sized,
[src]
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = ()>,
Self: Sized,
ⓘImportant traits for ForEachConcurrent<St, Fut, F>fn for_each_concurrent<Fut, F>(
self,
limit: impl Into<Option<usize>>,
f: F
) -> ForEachConcurrent<Self, Fut, F> where
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = ()>,
Self: Sized,
[src]
self,
limit: impl Into<Option<usize>>,
f: F
) -> ForEachConcurrent<Self, Fut, F> where
F: FnMut(Self::Item) -> Fut,
Fut: Future<Output = ()>,
Self: Sized,
fn take(self, n: u64) -> Take<Self> where
Self: Sized,
[src]
Self: Sized,
fn skip(self, n: u64) -> Skip<Self> where
Self: Sized,
[src]
Self: Sized,
fn fuse(self) -> Fuse<Self> where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for &'_ mut Ffn by_ref(&mut self) -> &mut Self
[src]
fn catch_unwind(self) -> CatchUnwind<Self> where
Self: Sized + UnwindSafe,
[src]
Self: Sized + UnwindSafe,
fn boxed<'a>(self) -> BoxStream<'a, Self::Item> where
Self: Sized + Send + 'a,
[src]
Self: Sized + Send + 'a,
fn boxed_local<'a>(self) -> LocalBoxStream<'a, Self::Item> where
Self: Sized + 'a,
[src]
Self: Sized + 'a,
fn buffered(self, n: usize) -> Buffered<Self> where
Self::Item: Future,
Self: Sized,
[src]
Self::Item: Future,
Self: Sized,
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self> where
Self::Item: Future,
Self: Sized,
[src]
Self::Item: Future,
Self: Sized,
fn zip<St>(self, other: St) -> Zip<Self, St> where
St: Stream,
Self: Sized,
[src]
St: Stream,
Self: Sized,
fn chain<St>(self, other: St) -> Chain<Self, St> where
St: Stream<Item = Self::Item>,
Self: Sized,
[src]
St: Stream<Item = Self::Item>,
Self: Sized,
fn peekable(self) -> Peekable<Self> where
Self: Sized,
[src]
Self: Sized,
fn chunks(self, capacity: usize) -> Chunks<Self> where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for Forward<St, Si>fn forward<S>(self, sink: S) -> Forward<Self, S> where
S: Sink<Self::Ok>,
Self: TryStream<Error = S::Error> + Sized,
[src]
S: Sink<Self::Ok>,
Self: TryStream<Error = S::Error> + Sized,
fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>) where
Self: Sink<Item> + Sized,
[src]
Self: Sink<Item> + Sized,
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item),
Self: Sized,
[src]
F: FnMut(&Self::Item),
Self: Sized,
ⓘImportant traits for Either<A, B>fn left_stream<B>(self) -> Either<Self, B> where
B: Stream<Item = Self::Item>,
Self: Sized,
[src]
B: Stream<Item = Self::Item>,
Self: Sized,
ⓘImportant traits for Either<A, B>fn right_stream<B>(self) -> Either<B, Self> where
B: Stream<Item = Self::Item>,
Self: Sized,
[src]
B: Stream<Item = Self::Item>,
Self: Sized,
fn poll_next_unpin(&mut self, cx: &mut Context) -> Poll<Option<Self::Item>> where
Self: Unpin,
[src]
Self: Unpin,
ⓘImportant traits for SelectNextSome<'_, St>fn select_next_some(&mut self) -> SelectNextSome<Self> where
Self: Unpin + FusedStream,
[src]
Self: Unpin + FusedStream,
impl<S> TryStreamExt for S where
S: TryStream + ?Sized,
[src]
S: TryStream + ?Sized,
fn err_into<E>(self) -> ErrInto<Self, E> where
Self: Sized,
Self::Error: Into<E>,
[src]
Self: Sized,
Self::Error: Into<E>,
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
Self: Sized,
F: FnMut(Self::Ok) -> T,
[src]
Self: Sized,
F: FnMut(Self::Ok) -> T,
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
Self: Sized,
F: FnMut(Self::Error) -> E,
[src]
Self: Sized,
F: FnMut(Self::Error) -> E,
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnMut(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
Self: Sized,
[src]
F: FnMut(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
Self: Sized,
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnMut(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
Self: Sized,
[src]
F: FnMut(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
Self: Sized,
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnMut(&Self::Ok),
Self: Sized,
[src]
F: FnMut(&Self::Ok),
Self: Sized,
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnMut(&Self::Error),
Self: Sized,
[src]
F: FnMut(&Self::Error),
Self: Sized,
fn into_stream(self) -> IntoStream<Self> where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for TryNext<'_, St>fn try_next(&mut self) -> TryNext<Self> where
Self: Unpin,
[src]
Self: Unpin,
ⓘImportant traits for TryForEach<St, Fut, F>fn try_for_each<Fut, F>(self, f: F) -> TryForEach<Self, Fut, F> where
F: FnMut(Self::Ok) -> Fut,
Fut: TryFuture<Ok = (), Error = Self::Error>,
Self: Sized,
[src]
F: FnMut(Self::Ok) -> Fut,
Fut: TryFuture<Ok = (), Error = Self::Error>,
Self: Sized,
fn try_skip_while<Fut, F>(self, f: F) -> TrySkipWhile<Self, Fut, F> where
F: FnMut(&Self::Ok) -> Fut,
Fut: TryFuture<Ok = bool, Error = Self::Error>,
Self: Sized,
[src]
F: FnMut(&Self::Ok) -> Fut,
Fut: TryFuture<Ok = bool, Error = Self::Error>,
Self: Sized,
ⓘImportant traits for TryForEachConcurrent<St, Fut, F>fn try_for_each_concurrent<Fut, F>(
self,
limit: impl Into<Option<usize>>,
f: F
) -> TryForEachConcurrent<Self, Fut, F> where
F: FnMut(Self::Ok) -> Fut,
Fut: Future<Output = Result<(), Self::Error>>,
Self: Sized,
[src]
self,
limit: impl Into<Option<usize>>,
f: F
) -> TryForEachConcurrent<Self, Fut, F> where
F: FnMut(Self::Ok) -> Fut,
Fut: Future<Output = Result<(), Self::Error>>,
Self: Sized,
ⓘImportant traits for TryCollect<St, C>fn try_collect<C: Default + Extend<Self::Ok>>(self) -> TryCollect<Self, C> where
Self: Sized,
[src]
Self: Sized,
fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F> where
Fut: Future<Output = bool>,
F: FnMut(&Self::Ok) -> Fut,
Self: Sized,
[src]
Fut: Future<Output = bool>,
F: FnMut(&Self::Ok) -> Fut,
Self: Sized,
fn try_filter_map<Fut, F, T>(self, f: F) -> TryFilterMap<Self, Fut, F> where
Fut: TryFuture<Ok = Option<T>, Error = Self::Error>,
F: FnMut(Self::Ok) -> Fut,
Self: Sized,
[src]
Fut: TryFuture<Ok = Option<T>, Error = Self::Error>,
F: FnMut(Self::Ok) -> Fut,
Self: Sized,
fn try_flatten(self) -> TryFlatten<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error: From<Self::Error>,
Self: Sized,
[src]
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error: From<Self::Error>,
Self: Sized,
ⓘImportant traits for TryFold<St, Fut, T, F>fn try_fold<T, Fut, F>(self, init: T, f: F) -> TryFold<Self, Fut, T, F> where
F: FnMut(T, Self::Ok) -> Fut,
Fut: TryFuture<Ok = T, Error = Self::Error>,
Self: Sized,
[src]
F: FnMut(T, Self::Ok) -> Fut,
Fut: TryFuture<Ok = T, Error = Self::Error>,
Self: Sized,
ⓘImportant traits for TryConcat<St>fn try_concat(self) -> TryConcat<Self> where
Self: Sized,
Self::Ok: Extend<<Self::Ok as IntoIterator>::Item> + IntoIterator + Default,
[src]
Self: Sized,
Self::Ok: Extend<<Self::Ok as IntoIterator>::Item> + IntoIterator + Default,
fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self> where
Self::Ok: TryFuture<Error = Self::Error>,
Self: Sized,
[src]
Self::Ok: TryFuture<Error = Self::Error>,
Self: Sized,
fn try_poll_next_unpin(
&mut self,
cx: &mut Context
) -> Poll<Option<Result<Self::Ok, Self::Error>>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Option<Result<Self::Ok, Self::Error>>> where
Self: Unpin,
ⓘImportant traits for Compat<R>fn compat(self) -> Compat<Self> where
Self: Sized + Unpin,
[src]
Self: Sized + Unpin,
fn into_async_read(self) -> IntoAsyncRead<Self> where
Self: Sized + TryStreamExt<Error = Error> + Unpin,
Self::Ok: AsRef<[u8]>,
[src]
Self: Sized + TryStreamExt<Error = Error> + Unpin,
Self::Ok: AsRef<[u8]>,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
ⓘImportant traits for &'_ mut Ffn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<S, T, E> TryStream for S where
S: Stream<Item = Result<T, E>> + ?Sized,
[src]
S: Stream<Item = Result<T, E>> + ?Sized,