pub struct BufferUnordered<S: Stream> { /* private fields */ }
Expand description
Stream for the buffered_unordered
method.
§Examples
use futures::channel::oneshot;
use futures::stream::{self, StreamExt};
use futures_buffered::BufferedStreamExt;
let (send_one, recv_one) = oneshot::channel();
let (send_two, recv_two) = oneshot::channel();
let stream_of_futures = stream::iter(vec![recv_one, recv_two]);
let mut buffered = stream_of_futures.buffered_unordered(10);
send_two.send(2i32)?;
assert_eq!(buffered.next().await, Some(Ok(2i32)));
send_one.send(1i32)?;
assert_eq!(buffered.next().await, Some(Ok(1i32)));
assert_eq!(buffered.next().await, None);
§Benchmarks
§Speed
Running 65536 100us timers with 256 concurrent jobs in a single threaded tokio runtime:
futures::stream::BufferUnordered time: [420.33 ms 422.57 ms 424.83 ms]
futures_buffered::BufferUnordered time: [363.39 ms 365.59 ms 367.78 ms]
§Memory usage
Running 512000 Ready<i32>
futures with 256 concurrent jobs.
- count: the number of times alloc/dealloc was called
- alloc: the number of cumulative bytes allocated
- dealloc: the number of cumulative bytes deallocated
futures::stream::BufferUnordered
count: 1024002
alloc: 40960144 B
dealloc: 40960000 B
futures_buffered::BufferUnordered
count: 2
alloc: 8264 B
dealloc: 0 B
Trait Implementations§
source§impl<St> Stream for BufferUnordered<St>
impl<St> Stream for BufferUnordered<St>
impl<'__pin, S: Stream> Unpin for BufferUnordered<S>where
__Origin<'__pin, S>: Unpin,
Auto Trait Implementations§
impl<S> Freeze for BufferUnordered<S>where
S: Freeze,
impl<S> !RefUnwindSafe for BufferUnordered<S>
impl<S> Send for BufferUnordered<S>
impl<S> Sync for BufferUnordered<S>
impl<S> !UnwindSafe for BufferUnordered<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