Skip to main content

BoundedAsyncStream

Struct BoundedAsyncStream 

Source
pub struct BoundedAsyncStream<T> { /* private fields */ }
Expand description

A bounded, lossy-by-default, executor-agnostic async stream.

Items are pushed by one or more AsyncStreamSender handles and pulled asynchronously via BoundedAsyncStream::next.

See the module-level docs for the full design rationale.

Implementations§

Source§

impl<T> BoundedAsyncStream<T>

Source

pub fn new(capacity: usize) -> (Self, AsyncStreamSender<T>)

Creates a new bounded stream with the given capacity.

Returns the consumer side and a single producer; clone the sender to fan out to multiple producers.

§Panics

Panics if capacity is 0 — a zero-capacity buffer would drop every item before the consumer could observe it. Use capacity 1 if you genuinely want “latest only” semantics.

Source

pub const fn next(&self) -> NextItem<'_, T>

Returns a future that resolves to the next item, or None once the stream is closed and drained.

Source

pub fn try_next(&self) -> Option<T>

Non-blocking pop. Returns None if the buffer is empty (regardless of whether the stream is open or closed).

Source

pub fn is_closed(&self) -> bool

Returns true if the stream has been closed (all senders dropped). Note: a closed stream may still have buffered items to drain.

Source

pub fn buffered_count(&self) -> usize

Returns the number of items currently buffered (0..=capacity).

Source

pub fn capacity(&self) -> usize

Returns the buffer capacity, as passed to Self::new.

Source

pub fn clear_buffer(&self)

Drops all currently buffered items without closing the stream.

Trait Implementations§

Source§

impl<T> Debug for BoundedAsyncStream<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Drop for BoundedAsyncStream<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<T: 'static> Stream for BoundedAsyncStream<T>

Available on crate feature futures-stream only.
Source§

type Item = T

Values yielded by the stream.
Source§

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

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§

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> 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<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