pub unsafe fn read_slice_at_offset_mut_unchecked<'a, T, S: Slab + ?Sized>(
    slab: &'a mut S,
    offset: usize,
    len: usize
) -> &'a mut [T]
Expand description

Reads a &mut [T] within slab at offset, not checking any requirements.

  • offset is the offset, in bytes, after the start of slab at which a [T; len] is placed.
  • len is the length of the returned slice, counted in elements of T.

Safety

You must ensure:

  • offset within slab is properly aligned for T
  • offset is within bounds of the slab
  • offset + size_of::<T> * len is within bounds of the slab
  • You must have previously fully-initialized a valid a [T; len] at the given offset into slab. If you want to fill an uninitialized buffer with data, you should instead use any of the copy helper functions or one of the maybe_uninit_mut read functions.
  • See also safety docs of core::slice::from_raw_parts_mut.

Note that if you write through the returned reference, any padding bytes within the layout of T (which for a repr(Rust) type is arbitrary and unknown) must thereafter be considered uninitialized until you explicitly initialize them again. This means that if you write a T which contains padding into slab, you must not, for example, try to read those bytes as &[u8] afterwards (or as some other type which expects those bytes to be initialized), as you would then be reading uninitialized memory, which is undefined behavior.

* Validity is a complex topic not to be taken lightly. See this rust reference page for more details.