pub struct PoolBuffer<const CAP: usize> { /* private fields */ }Expand description
Fixed-Capacity Byte-Buffer, der wie Vec<u8> befuellt werden kann
— aber keinen Heap-Realloc macht. Ueberlauf wird per
Result gemeldet, nicht per panic!.
Layout: [u8; CAP] + len: u16 (max 65 535 Bytes pro Buffer).
Fuer DDS-Hot-Path-Samples bis 1.5 kB ist das genug; groessere
Samples laufen weiter ueber den alloc-Pfad.
Implementations§
Source§impl<const CAP: usize> PoolBuffer<CAP>
impl<const CAP: usize> PoolBuffer<CAP>
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Erzeugt einen leeren Buffer.
CAP muss <= u16::MAX as usize sein — bei groesseren
Werten lehnt jede Mutation mit PoolBufferError::CapacityTooLarge ab.
Sourcepub fn spare_capacity_mut(&mut self) -> &mut [u8] ⓘ
pub fn spare_capacity_mut(&mut self) -> &mut [u8] ⓘ
Mutabler Slice ueber den uninitialisierten Tail (Capacity-len).
Sourcepub fn extend_from_slice(&mut self, data: &[u8]) -> Result<(), PoolBufferError>
pub fn extend_from_slice(&mut self, data: &[u8]) -> Result<(), PoolBufferError>
Haengt data ans Ende. Fehler wenn der Buffer voll waere.
§Errors
PoolBufferError::Overflow wenn self.len() + data.len() > CAP.
PoolBufferError::CapacityTooLarge wenn CAP > u16::MAX.
Sourcepub fn push(&mut self, byte: u8) -> Result<(), PoolBufferError>
pub fn push(&mut self, byte: u8) -> Result<(), PoolBufferError>
Schreibt ein einzelnes Byte. Fehler bei Vollheit.
§Errors
PoolBufferError::Overflow wenn der Buffer voll ist.
Sourcepub fn set_len(&mut self, new_len: usize) -> Result<(), PoolBufferError>
pub fn set_len(&mut self, new_len: usize) -> Result<(), PoolBufferError>
Setzt die Laenge explizit. Genutzt nach einem spare_capacity_mut-
Schreibzugriff durch ein Codec-Backend.
§Errors
PoolBufferError::Overflow wenn new_len > CAP.