pub struct OutBuf<'a, T> { /* private fields */ }Expand description
A write-only slice of T.
Implementations§
source§impl<'a, T> OutBuf<'a, T>
impl<'a, T> OutBuf<'a, T>
sourcepub unsafe fn from_raw(data: *mut T, len: usize) -> Self
pub unsafe fn from_raw(data: *mut T, len: usize) -> Self
Forms an OutBuf<'a, T>
Safety
Behavior is undefined if any of the following conditions are violated:
-
datamust bevalidfor writes forlen * mem::size_of::<T>()many bytes, and it must be properly aligned. This means in particular:- The entire memory range of this slice must be contained within a single allocated object! Slices can never span across multiple allocated objects.
datamust be non-null and aligned even for zero-length slices. One reason for this is that enum layout optimizations may rely on references (including slices of any length) being aligned and non-null to distinguish them from other data. You can obtain a pointer that is usable asdatafor zero-length slices usingNonNull::dangling().
-
datamust point tolenconsecutive places for typeT. -
The memory referenced by the returned slice must not be accessed through any other pointer (not derived from the return value) for the duration of lifetime
'a. Both read and write accesses are forbidden. -
The total size
len * mem::size_of::<T>()of the slice must be no larger thanisize::MAX. See the safety documentation ofpointer::offset.
sourcepub fn uninit(slice: &'a mut [MaybeUninit<T>]) -> Self
pub fn uninit(slice: &'a mut [MaybeUninit<T>]) -> Self
Forms an OutBuf from an uninitialized slice.
sourcepub fn as_mut_ptr(&mut self) -> *mut T
pub fn as_mut_ptr(&mut self) -> *mut T
Returns an unsafe mutable pointer to the buffer.