Struct kvarn::prelude::ReadBuf

pub struct ReadBuf<'a> { /* private fields */ }
Expand description

A wrapper around a byte buffer that is incrementally filled and initialized.

This type is a sort of “double cursor”. It tracks three regions in the buffer: a region at the beginning of the buffer that has been logically filled with data, a region that has been initialized at some point but not yet logically filled, and a region at the end that may be uninitialized. The filled region is guaranteed to be a subset of the initialized region.

In summary, the contents of the buffer can be visualized as:

[             capacity              ]
[ filled |         unfilled         ]
[    initialized    | uninitialized ]

It is undefined behavior to de-initialize any bytes from the uninitialized region, since it is merely unknown whether this region is uninitialized or not, and if part of it turns out to be initialized, it must stay initialized.

Implementations§

§

impl<'a> ReadBuf<'a>

pub fn new(buf: &'a mut [u8]) -> ReadBuf<'a>

Creates a new ReadBuf from a fully initialized buffer.

pub fn uninit(buf: &'a mut [MaybeUninit<u8