Function core::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
的安全文档。