Function alloc::slice::from_raw_parts_mut1.0.0[][src]

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

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

Safety

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

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

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

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

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

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

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