pub struct MergeUnbounded<S> { /* private fields */ }
Expand description
A combined stream that releases values in any order that they come.
This differs from crate::Merge
in that MergeUnbounded
does not have a fixed capacity
but instead grows on demand. It uses crate::FuturesUnordered
under the hood.
§Example
use std::future::ready;
use futures::stream::{self, StreamExt};
use futures::executor::block_on;
use futures_buffered::MergeUnbounded;
block_on(async {
let a = stream::once(ready(2));
let b = stream::once(ready(3));
let mut s = MergeUnbounded::from_iter([a, b]);
let mut counter = 0;
while let Some(n) = s.next().await {
if n == 3 {
s.push(stream::once(ready(4)));
}
counter += n;
}
assert_eq!(counter, 2+3+4);
})
Implementations§
source§impl<S> MergeUnbounded<S>
impl<S> MergeUnbounded<S>
sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new, empty MergeUnbounded
.
Calling poll_next
will return Poll::Ready(None)
until a stream is added with Self::push
.
sourcepub fn push(&mut self, stream: S)
pub fn push(&mut self, stream: S)
Push a stream into the set.
This method adds the given stream to the set. This method will not
call poll_next
on the submitted stream. The caller must
ensure that MergeUnbounded::poll_next
is called
in order to receive wake-up notifications for the given stream.
Trait Implementations§
source§impl<S> Default for MergeUnbounded<S>
impl<S> Default for MergeUnbounded<S>
source§impl<S: Stream + Unpin> FromIterator<S> for MergeUnbounded<S>
impl<S: Stream + Unpin> FromIterator<S> for MergeUnbounded<S>
source§fn from_iter<T>(iter: T) -> Selfwhere
T: IntoIterator<Item = S>,
fn from_iter<T>(iter: T) -> Selfwhere
T: IntoIterator<Item = S>,
Creates a value from an iterator. Read more
source§impl<S: Stream + Unpin> Stream for MergeUnbounded<S>
impl<S: Stream + Unpin> Stream for MergeUnbounded<S>
Auto Trait Implementations§
impl<S> Freeze for MergeUnbounded<S>
impl<S> !RefUnwindSafe for MergeUnbounded<S>
impl<S> Send for MergeUnbounded<S>where
S: Send,
impl<S> Sync for MergeUnbounded<S>where
S: Sync,
impl<S> Unpin for MergeUnbounded<S>
impl<S> !UnwindSafe for MergeUnbounded<S>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> BufferedStreamExt for T
impl<T> BufferedStreamExt for T
source§fn buffered_ordered(self, n: usize) -> BufferedOrdered<Self>
fn buffered_ordered(self, n: usize) -> BufferedOrdered<Self>
An adaptor for creating a buffered list of pending futures. Read more
source§fn buffered_unordered(self, n: usize) -> BufferUnordered<Self>
fn buffered_unordered(self, n: usize) -> BufferUnordered<Self>
An adaptor for creating a buffered list of pending futures (unordered). Read more
source§fn for_each_concurrent<Fut, F>(
self,
limit: usize,
f: F,
) -> ForEachConcurrent<Self, Fut, F>
fn for_each_concurrent<Fut, F>( self, limit: usize, f: F, ) -> ForEachConcurrent<Self, Fut, F>
Runs this stream to completion, executing the provided asynchronous
closure for each element on the stream concurrently as elements become
available. Read more
source§impl<T> BufferedTryStreamExt for T
impl<T> BufferedTryStreamExt for T
source§fn try_buffered_ordered(self, n: usize) -> TryBufferedOrdered<Self>
fn try_buffered_ordered(self, n: usize) -> TryBufferedOrdered<Self>
An adaptor for creating a buffered list of pending futures. Read more
source§fn try_buffered_unordered(self, n: usize) -> TryBufferUnordered<Self>
fn try_buffered_unordered(self, n: usize) -> TryBufferUnordered<Self>
An adaptor for creating a buffered list of pending futures (unordered). Read more