pub struct TrustedSliceReaderZeroCopy<'a> { /* private fields */ }Expand description
In-memory Reader that does not perform bounds checking, with zero-copy support.
Generally this should not be constructed directly, but rather by calling Reader::as_trusted_for
on a trusted Reader. This will ensure that the safety invariants are upheld.
§Safety
- The inner buffer must have sufficient capacity for all reads. It is UB if this is not upheld.
Trait Implementations§
Source§impl<'a> Reader<'a> for TrustedSliceReaderZeroCopy<'a>
impl<'a> Reader<'a> for TrustedSliceReaderZeroCopy<'a>
Source§type Trusted<'b> = TrustedSliceReaderZeroCopy<'a>
where
Self: 'b
type Trusted<'b> = TrustedSliceReaderZeroCopy<'a> where Self: 'b
Source§fn fill_buf(&mut self, n_bytes: usize) -> ReadResult<&[u8]>
fn fill_buf(&mut self, n_bytes: usize) -> ReadResult<&[u8]>
Return up to
n_bytes from the internal buffer without advancing. Implementations may
read more data internally to satisfy future requests. Returns fewer than n_bytes at EOF. Read moreSource§fn fill_exact(&mut self, n_bytes: usize) -> ReadResult<&[u8]>
fn fill_exact(&mut self, n_bytes: usize) -> ReadResult<&[u8]>
Return exactly
n_bytes without advancing. Read moreSource§fn borrow_exact(&mut self, len: usize) -> ReadResult<&'a [u8]>
fn borrow_exact(&mut self, len: usize) -> ReadResult<&'a [u8]>
Source§unsafe fn consume_unchecked(&mut self, amt: usize)
unsafe fn consume_unchecked(&mut self, amt: usize)
Advance by exactly
amt bytes without bounds checks. Read moreSource§fn consume(&mut self, amt: usize) -> ReadResult<()>
fn consume(&mut self, amt: usize) -> ReadResult<()>
Advance the reader exactly
amt bytes, returning an error if the source does not have enough bytes.Source§unsafe fn as_trusted_for(
&mut self,
n_bytes: usize,
) -> ReadResult<Self::Trusted<'_>>
unsafe fn as_trusted_for( &mut self, n_bytes: usize, ) -> ReadResult<Self::Trusted<'_>>
Source§fn fill_array<const N: usize>(&mut self) -> ReadResult<&[u8; N]>
fn fill_array<const N: usize>(&mut self) -> ReadResult<&[u8; N]>
Source§fn borrow_exact_mut(&mut self, len: usize) -> ReadResult<&'a mut [u8]>
fn borrow_exact_mut(&mut self, len: usize) -> ReadResult<&'a mut [u8]>
Source§fn peek(&mut self) -> ReadResult<&u8>
fn peek(&mut self) -> ReadResult<&u8>
Return a reference to the next byte without advancing. Read more
Source§fn copy_into_slice(&mut self, dst: &mut [MaybeUninit<u8>]) -> ReadResult<()>
fn copy_into_slice(&mut self, dst: &mut [MaybeUninit<u8>]) -> ReadResult<()>
Source§fn copy_into_array<const N: usize>(
&mut self,
dst: &mut MaybeUninit<[u8; N]>,
) -> ReadResult<()>
fn copy_into_array<const N: usize>( &mut self, dst: &mut MaybeUninit<[u8; N]>, ) -> ReadResult<()>
Source§unsafe fn copy_into_t<T>(&mut self, dst: &mut MaybeUninit<T>) -> ReadResult<()>
unsafe fn copy_into_t<T>(&mut self, dst: &mut MaybeUninit<T>) -> ReadResult<()>
Source§unsafe fn copy_into_slice_t<T>(
&mut self,
dst: &mut [MaybeUninit<T>],
) -> ReadResult<()>
unsafe fn copy_into_slice_t<T>( &mut self, dst: &mut [MaybeUninit<T>], ) -> ReadResult<()>
Auto Trait Implementations§
impl<'a> Freeze for TrustedSliceReaderZeroCopy<'a>
impl<'a> RefUnwindSafe for TrustedSliceReaderZeroCopy<'a>
impl<'a> Send for TrustedSliceReaderZeroCopy<'a>
impl<'a> Sync for TrustedSliceReaderZeroCopy<'a>
impl<'a> Unpin for TrustedSliceReaderZeroCopy<'a>
impl<'a> UnsafeUnpin for TrustedSliceReaderZeroCopy<'a>
impl<'a> UnwindSafe for TrustedSliceReaderZeroCopy<'a>
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