Function std::slice::from_raw_parts_mut

1.0.0 (const: unstable) · source ·
pub unsafe fn from_raw_parts_mut<'a, T>(data: *mut T, len: usize) -> &'a mut [T]
Expand description

执行与 from_raw_parts 相同的功能,除了返回可变切片。

Safety

如果违反以下任一条件,则行为是未定义的:

  • 对于 len * mem::size_of::<T>() 多个字节的读取和写入,data 必须是 valid,并且必须正确对齐。这尤其意味着:

    • 该切片的整个存储范围必须包含在一个分配的对象中! 切片永远不能跨越多个分配的对象。
    • 即使对于零长度切片,data 也必须非空且对齐。 这样做的一个原因是,枚举布局优化可能依赖于对齐的引用 (包括任何长度的切片) 和非空值,以将它们与其他数据区分开。

    您可以使用 NonNull::dangling() 获得可用作零长度切片的 data 的指针。

  • data 必须指向 len 类型的 T 类型的连续正确初始化值。

  • 在生命周期 'a 的持续时间内,不得通过任何其他指针 (不是从返回值派生) 访问返回的切片引用的内存。 读取和写入访问均被禁止。

  • 切片的总大小 len * mem::size_of::<T>() 必须不大于 isize::MAX。 请参见 pointer::offset 的安全文档。