# Function slice_from_raw_parts_mut

1.42.0 (const: 1.83.0) · Source

    pub const fn slice_from_raw_parts_mut<T>(data: *mut T, len: usize) -> *mut [T]

Expand description

Forms a raw mutable slice from a pointer and a length.

The `len` argument is the number of elements, not the number of bytes.

Performs the same functionality as `slice_from_raw_parts`, except that a raw mutable slice is returned, as opposed to a raw immutable slice.

This function is safe, but actually using the return value is unsafe. See the documentation of `slice::from_raw_parts_mut` for slice safety requirements.

## §Examples

    use std::ptr;

    let x = &mut [5, 6, 7];
    let raw_pointer = x.as_mut_ptr();
    let slice = ptr::slice_from_raw_parts_mut(raw_pointer, 3);

    unsafe {
        (*slice)[2] = 99; // assign a value at an index in the slice
    };

    assert_eq!(unsafe { &*slice }[2], 99);

You must ensure that the pointer is valid and not null before dereferencing the raw slice. A slice reference must never have a null pointer, even if it’s empty.

ⓘ

    use std::ptr;
    let danger: *mut [u8] = ptr::slice_from_raw_parts_mut(ptr::null_mut(), 0);
    unsafe {
        danger.as_mut().expect("references must not be null");
    }