pub struct StreamDeframer { /* private fields */ }Expand description
An incremental deframer. Feed it arriving bytes with push; pull complete frames
with drain_frames. Holds only the bytes not yet delivered (a partial
frame at most), so memory stays bounded regardless of stream length.
Implementations§
Source§impl StreamDeframer
impl StreamDeframer
pub fn new() -> Self
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
No un-delivered bytes remain (the stream is fully consumed up to a frame boundary).
Sourcepub fn pending(&self) -> usize
pub fn pending(&self) -> usize
Bytes buffered but not yet delivered (a partial frame awaiting more input).
Sourcepub fn drain_frames(&mut self, f: impl FnMut(&[u8])) -> usize
pub fn drain_frames(&mut self, f: impl FnMut(&[u8])) -> usize
Hand every COMPLETE frame currently buffered, in arrival order, to f as a borrowed body
slice (zero-copy). Stops at the first incomplete frame — keeping its partial bytes for the
next push — then compacts the consumed prefix so the buffer never grows
unbounded. Returns how many frames were delivered.
Trait Implementations§
Source§impl Default for StreamDeframer
impl Default for StreamDeframer
Source§fn default() -> StreamDeframer
fn default() -> StreamDeframer
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for StreamDeframer
impl RefUnwindSafe for StreamDeframer
impl Send for StreamDeframer
impl Sync for StreamDeframer
impl Unpin for StreamDeframer
impl UnsafeUnpin for StreamDeframer
impl UnwindSafe for StreamDeframer
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.