pub struct FramedRead<R, D> { /* private fields */ }Expand description
Async framed reader that applies a Decoder to an AsyncRead source.
Implements Stream where each item is a decoded frame. Data is read
from the inner reader into an internal buffer, then the decoder extracts
complete frames.
§Cancel Safety
poll_next is cancel-safe. Partial data remains in the internal buffer
across cancellations. No decoded frame is lost unless it was already yielded.
Implementations§
Source§impl<R, D> FramedRead<R, D>
impl<R, D> FramedRead<R, D>
Sourcepub fn new(inner: R, decoder: D) -> Self
pub fn new(inner: R, decoder: D) -> Self
Creates a new FramedRead with the default buffer capacity.
Sourcepub fn with_capacity(inner: R, decoder: D, capacity: usize) -> Self
pub fn with_capacity(inner: R, decoder: D, capacity: usize) -> Self
Creates a new FramedRead with the specified buffer capacity.
Sourcepub fn decoder_mut(&mut self) -> &mut D
pub fn decoder_mut(&mut self) -> &mut D
Returns a mutable reference to the decoder.
Sourcepub fn read_buffer(&self) -> &BytesMut
pub fn read_buffer(&self) -> &BytesMut
Returns a reference to the read buffer.
Sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Consumes self and returns the inner reader.
Sourcepub fn into_parts(self) -> (R, D, BytesMut)
pub fn into_parts(self) -> (R, D, BytesMut)
Consumes self and returns the inner reader, decoder, and buffer.
Trait Implementations§
Source§impl<R, D> Stream for FramedRead<R, D>
impl<R, D> Stream for FramedRead<R, D>
Auto Trait Implementations§
impl<R, D> Freeze for FramedRead<R, D>
impl<R, D> RefUnwindSafe for FramedRead<R, D>where
R: RefUnwindSafe,
D: RefUnwindSafe,
impl<R, D> Send for FramedRead<R, D>
impl<R, D> Sync for FramedRead<R, D>
impl<R, D> Unpin for FramedRead<R, D>
impl<R, D> UnsafeUnpin for FramedRead<R, D>where
R: UnsafeUnpin,
D: UnsafeUnpin,
impl<R, D> UnwindSafe for FramedRead<R, D>where
R: UnwindSafe,
D: UnwindSafe,
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<S> StreamExt for S
impl<S> StreamExt for S
Source§fn next(&mut self) -> Next<'_, Self> ⓘwhere
Self: Unpin,
fn next(&mut self) -> Next<'_, Self> ⓘwhere
Self: Unpin,
Returns the next item from the stream.
Source§fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
Transforms each item using an async closure.
Source§fn merge(self, other: Self) -> Merge<Self>where
Self: Sized,
fn merge(self, other: Self) -> Merge<Self>where
Self: Sized,
Interleaves this stream with another stream of the same concrete type. Read more
Source§fn zip<S2>(self, other: S2) -> Zip<Self, S2>
fn zip<S2>(self, other: S2) -> Zip<Self, S2>
Zips this stream with another stream, yielding pairs.
Source§fn filter<P>(self, predicate: P) -> Filter<Self, P>
fn filter<P>(self, predicate: P) -> Filter<Self, P>
Yields only items that match the predicate.
Source§fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>
Filters and transforms items in one step.
Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
Takes items while the predicate is true.
Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
Skips items while the predicate is true.
Source§fn buffered(self, n: usize) -> Buffered<Self>
fn buffered(self, n: usize) -> Buffered<Self>
Buffers up to
n futures, preserving output order.Source§fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
Buffers up to
n futures, yielding results as they complete.Source§fn chunks(self, size: usize) -> Chunks<Self>where
Self: Sized,
fn chunks(self, size: usize) -> Chunks<Self>where
Self: Sized,
Collects items into fixed-size chunks.
Source§fn ready_chunks(self, size: usize) -> ReadyChunks<Self>where
Self: Sized,
fn ready_chunks(self, size: usize) -> ReadyChunks<Self>where
Self: Sized,
Yields immediately available items up to a maximum chunk size.
Source§fn fold<Acc, F>(self, init: Acc, f: F) -> Fold<Self, F, Acc> ⓘ
fn fold<Acc, F>(self, init: Acc, f: F) -> Fold<Self, F, Acc> ⓘ
Folds all items into a single value.
Source§fn for_each_async<F, Fut>(self, f: F) -> ForEachAsync<Self, F, Fut> ⓘ
fn for_each_async<F, Fut>(self, f: F) -> ForEachAsync<Self, F, Fut> ⓘ
Executes an async closure for each item.
Source§fn try_collect<T, E, C>(self) -> TryCollect<Self, C> ⓘ
fn try_collect<T, E, C>(self) -> TryCollect<Self, C> ⓘ
Collects items from a stream of Results, short-circuiting on error.
Source§fn try_fold<T, E, Acc, F>(self, init: Acc, f: F) -> TryFold<Self, F, Acc> ⓘ
fn try_fold<T, E, Acc, F>(self, init: Acc, f: F) -> TryFold<Self, F, Acc> ⓘ
Folds a stream of Results, short-circuiting on error.
Source§fn try_for_each<F, E>(self, f: F) -> TryForEach<Self, F> ⓘ
fn try_for_each<F, E>(self, f: F) -> TryForEach<Self, F> ⓘ
Executes a fallible closure for each item, short-circuiting on error.
Source§fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
Yields intermediate accumulator values, like
Iterator::scan. Read moreSource§fn peekable(self) -> Peekable<Self>where
Self: Sized,
fn peekable(self) -> Peekable<Self>where
Self: Sized,
Creates a peekable stream that supports looking at the next
item without consuming it.