Struct GenericChunkedBuffer

Source
pub struct GenericChunkedBuffer<const CHUNK_SIZE: usize> { /* private fields */ }
Expand description

A deque style buffer that can be written to and read from.

The buffer is composed of a series of fixed size chunks.

This structure is useful for memory constrained environments. It limits the size of contiguous allocations and incrementally releases memory as the buffer is consumed.

Example code:

use chunked_buffer::ChunkedBuffer;

let mut buf = ChunkedBuffer::new();
buf.write(&[1, 2, 3]);
let mut dest = [0; 10];
let n = buf.read(&mut dest);
assert_eq!(n, 3);
assert_eq!(dest, [1, 2, 3, 0, 0, 0, 0, 0, 0, 0]);

Implementations§

Source§

impl<const CHUNK_SIZE: usize> GenericChunkedBuffer<CHUNK_SIZE>

Source

pub fn new() -> Self

Create a new, empty buffer

Source

pub fn len(&self) -> usize

The number of bytes in the buffer

Source

pub fn is_empty(&self) -> bool

Returns true if the buffer is empty

Source

pub fn read(&mut self, dest: &mut [u8]) -> usize

Consumes as many bytes as possible from the start of the buffer and writes them to dest

Source

pub fn write(&mut self, src: &[u8])

pushes all the bytes in src to the end of the buffer

Source

pub fn iter(&self) -> Iter<'_, CHUNK_SIZE>

Returns an iterator over u8 contained in buffer

Source

pub fn iter_chunks(&self) -> IterChunk<'_, CHUNK_SIZE>

Returns an iterator over the chunks contained in buffer

Source

pub fn to_vec(&self) -> Vec<u8>

Converts the buffer into a vector

Trait Implementations§

Source§

impl<const CHUNK_SIZE: usize> Default for GenericChunkedBuffer<CHUNK_SIZE>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<const CHUNK_SIZE: usize> Index<usize> for GenericChunkedBuffer<CHUNK_SIZE>

Source§

type Output = u8

The returned type after indexing.
Source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<const CHUNK_SIZE: usize> IndexMut<usize> for GenericChunkedBuffer<CHUNK_SIZE>

Source§

fn index_mut(&mut self, index: usize) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<const CHUNK_SIZE: usize> Freeze for GenericChunkedBuffer<CHUNK_SIZE>

§

impl<const CHUNK_SIZE: usize> RefUnwindSafe for GenericChunkedBuffer<CHUNK_SIZE>

§

impl<const CHUNK_SIZE: usize> Send for GenericChunkedBuffer<CHUNK_SIZE>

§

impl<const CHUNK_SIZE: usize> Sync for GenericChunkedBuffer<CHUNK_SIZE>

§

impl<const CHUNK_SIZE: usize> Unpin for GenericChunkedBuffer<CHUNK_SIZE>

§

impl<const CHUNK_SIZE: usize> UnwindSafe for GenericChunkedBuffer<CHUNK_SIZE>

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.