futures_buffered

Struct MergeBounded

source
pub struct MergeBounded<S> { /* private fields */ }
Expand description

A combined stream that releases values in any order that they come

§Example

use std::future::ready;
use futures::stream::{self, StreamExt};
use futures::executor::block_on;
use futures_buffered::Merge;

block_on(async {
    let a = stream::once(ready(2));
    let b = stream::once(ready(3));
    let c = stream::once(ready(5));
    let d = stream::once(ready(7));
    let mut s = Merge::from_iter([a, b, c, d]);

    let mut counter = 0;
    while let Some(n) = s.next().await {
        counter += n;
    }
    assert_eq!(counter, 2+3+5+7);
})

Implementations§

source§

impl<S> MergeBounded<S>

source

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 Merge::poll_next is called in order to receive wake-up notifications for the given stream.

§Panics

This method will panic if the buffer is currently full. See Merge::try_push to get a result instead

source

pub fn try_push(&mut self, stream: S) -> Result<(), S>

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 FuturesUnorderedBounded::poll_next is called in order to receive wake-up notifications for the given future.

§Errors

This method will error if the buffer is currently full, returning the future back

Trait Implementations§

source§

impl<S: Stream> FromIterator<S> for MergeBounded<S>

source§

fn from_iter<T>(iter: T) -> Self
where T: IntoIterator<Item = S>,

Creates a value from an iterator. Read more
source§

impl<S: Stream> Stream for MergeBounded<S>

source§

type Item = <S as Stream>::Item

Values yielded by the stream.
source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

§

impl<S> Freeze for MergeBounded<S>

§

impl<S> !RefUnwindSafe for MergeBounded<S>

§

impl<S> Send for MergeBounded<S>
where S: Send,

§

impl<S> Sync for MergeBounded<S>
where S: Sync,

§

impl<S> Unpin for MergeBounded<S>

§

impl<S> !UnwindSafe for MergeBounded<S>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> BufferedStreamExt for T
where T: Stream + ?Sized,

source§

fn buffered_ordered(self, n: usize) -> BufferedOrdered<Self>
where Self::Item: Future, Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
source§

fn buffered_unordered(self, n: usize) -> BufferUnordered<Self>
where Self::Item: Future, Self: Sized,

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>
where F: FnMut(Self::Item) -> Fut, Fut: Future<Output = ()>, Self: Sized,

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
where T: TryStream + ?Sized,

source§

fn try_buffered_ordered(self, n: usize) -> TryBufferedOrdered<Self>
where Self::Ok: TryFuture<Err = Self::Err>, Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
source§

fn try_buffered_unordered(self, n: usize) -> TryBufferUnordered<Self>
where Self::Ok: TryFuture<Err = Self::Err>, Self: Sized,

An adaptor for creating a buffered list of pending futures (unordered). Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, E, S> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

source§

type Ok = T

source§

type Err = E

source§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

source§

type Ok = T

The type of successful values yielded by this future
source§

type Error = E

The type of failures yielded by this future
source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more