pub struct ChunkVecBuffer {
chunks: VecDeque<Vec<u8>>,
limit: Option<usize>,
}
Expand description
This is a byte buffer that is built from a vector of byte vectors. This avoids extra copies when appending a new byte vector, at the expense of more complexity when reading out.
Fields§
§chunks: VecDeque<Vec<u8>>
§limit: Option<usize>
Implementations§
source§impl ChunkVecBuffer
impl ChunkVecBuffer
pub fn new(limit: Option<usize>) -> Self
sourcepub fn set_limit(&mut self, new_limit: Option<usize>)
pub fn set_limit(&mut self, new_limit: Option<usize>)
Sets the upper limit on how many bytes this object can store.
Setting a lower limit than the currently stored data is not an error.
A None
limit is interpreted as no limit.
sourcepub fn apply_limit(&self, len: usize) -> usize
pub fn apply_limit(&self, len: usize) -> usize
For a proposed append of len
bytes, how many
bytes should we actually append to adhere to the
currently set limit
?
sourcepub fn append_limited_copy(&mut self, bytes: &[u8]) -> usize
pub fn append_limited_copy(&mut self, bytes: &[u8]) -> usize
Append a copy of bytes
, perhaps a prefix if
we’re near the limit.
sourcepub fn pop(&mut self) -> Option<Vec<u8>>
pub fn pop(&mut self) -> Option<Vec<u8>>
Take one of the chunks from this object. This
function panics if the object is_empty
.
sourcepub fn read(&mut self, buf: &mut [u8]) -> Result<usize>
pub fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Read data out of this object, writing it into buf
and returning how many bytes were written there.
fn consume(&mut self, used: usize)
Auto Trait Implementations§
impl Freeze for ChunkVecBuffer
impl RefUnwindSafe for ChunkVecBuffer
impl Send for ChunkVecBuffer
impl Sync for ChunkVecBuffer
impl Unpin for ChunkVecBuffer
impl UnwindSafe for ChunkVecBuffer
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<Tail, T> Prepend<T> for Tail
impl<Tail, T> Prepend<T> for Tail
§type PreprendResult = Tail
type PreprendResult = Tail
The Resulting [
TupleList
], of an [Prepend::prepend()
] call,
including the prepended entry.