Skip to main content

SseStream

Struct SseStream 

Source
pub struct SseStream<S, B, E>
where S: Stream<Item = Result<B, E>>, B: AsRef<[u8]>,
{ /* private fields */ }
Available on crate feature stream only.
Expand description

Adapts a fallible byte stream into a stream of parsed SseEvents.

Errors from the underlying byte stream are forwarded unchanged. When the byte stream ends, any buffered-but-undispatched data is discarded per the SSE specification.

The adapter keeps a single scratch Vec that the parser writes into on every poll and a VecDeque it drains from, so steady-state polling performs no per-chunk heap allocation beyond the events themselves.

Implementations§

Source§

impl<S, B, E> SseStream<S, B, E>
where S: Stream<Item = Result<B, E>>, B: AsRef<[u8]>,

Source

pub fn new(inner: S) -> Self

Wrap a byte stream.

Trait Implementations§

Source§

impl<S, B, E> Stream for SseStream<S, B, E>
where S: Stream<Item = Result<B, E>> + Unpin, B: AsRef<[u8]>,

Source§

type Item = Result<SseEvent, E>

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, B, E> Freeze for SseStream<S, B, E>
where S: Freeze,

§

impl<S, B, E> RefUnwindSafe for SseStream<S, B, E>
where S: RefUnwindSafe,

§

impl<S, B, E> Send for SseStream<S, B, E>
where S: Send,

§

impl<S, B, E> Sync for SseStream<S, B, E>
where S: Sync,

§

impl<S, B, E> Unpin for SseStream<S, B, E>
where S: Unpin,

§

impl<S, B, E> UnsafeUnpin for SseStream<S, B, E>
where S: UnsafeUnpin,

§

impl<S, B, E> UnwindSafe for SseStream<S, B, E>
where S: UnwindSafe,

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