pub struct ZeroCopyBuffer { /* private fields */ }Expand description
A zero-copy buffer with memory pooling
Reference counting is handled by Arc<ZeroCopyBuffer> — the internal
ref_count field has been removed in favour of a single source of truth.
Implementations§
Source§impl ZeroCopyBuffer
impl ZeroCopyBuffer
Sourcepub fn reserve(self: &Arc<Self>, len: usize) -> Option<BufferSlice>
pub fn reserve(self: &Arc<Self>, len: usize) -> Option<BufferSlice>
Get a slice of the buffer for writing. Requires an Arc reference to safely create a BufferSlice.
Sourcepub unsafe fn get_mut_slice(&self, offset: usize, len: usize) -> &mut [u8] ⓘ
pub unsafe fn get_mut_slice(&self, offset: usize, len: usize) -> &mut [u8] ⓘ
Get a mutable slice for the reserved range
§Safety
Caller must ensure exclusive access to this range. The mutable borrow from immutable self is intentional - this is interior mutability via raw pointers with atomic coordination for lock-free access.
Sourcepub fn reset(&self) -> bool
pub fn reset(&self) -> bool
Reset buffer for reuse.
Resets the write position to 0. The caller must ensure exclusive ownership
(e.g. Arc::strong_count() == 1) before calling.
Sourcepub fn add_ref(&self)
👎Deprecated: Use Arc::clone instead
pub fn add_ref(&self)
Compatibility shim — ref counting is now handled by Arc.
Sourcepub fn try_allocate(&self, len: usize) -> Option<usize>
pub fn try_allocate(&self, len: usize) -> Option<usize>
Allocate len bytes and advance the write position, returning the start offset.
Does NOT create a BufferSlice — the caller is expected
to hold an Arc<ZeroCopyBuffer> which keeps the buffer alive.
Sourcepub fn release(&self) -> bool
👎Deprecated: Use Arc::strong_count instead
pub fn release(&self) -> bool
Compatibility shim — ref counting is now handled by Arc.
Trait Implementations§
Source§impl Debug for ZeroCopyBuffer
impl Debug for ZeroCopyBuffer
Source§impl Drop for ZeroCopyBuffer
impl Drop for ZeroCopyBuffer
impl Send for ZeroCopyBuffer
impl Sync for ZeroCopyBuffer
Auto Trait Implementations§
impl !Freeze for ZeroCopyBuffer
impl RefUnwindSafe for ZeroCopyBuffer
impl Unpin for ZeroCopyBuffer
impl UnwindSafe for ZeroCopyBuffer
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more