本文简要介绍rust语言中 std::mem::MaybeUninit.as_mut_ptr
的用法。
用法
pub fn as_mut_ptr(&mut self) -> *mut T
获取指向所包含值的可变指针。除非初始化MaybeUninit<T>
,否则从此指针读取或将其转换为引用是未定义的行为。
例子
此方法的正确用法:
use std::mem::MaybeUninit;
let mut x = MaybeUninit::<Vec<u32>>::uninit();
x.write(vec![0, 1, 2]);
// Create a reference into the `MaybeUninit<Vec<u32>>`.
// This is okay because we initialized it.
let x_vec = unsafe { &mut *x.as_mut_ptr() };
x_vec.push(3);
assert_eq!(x_vec.len(), 4);
此方法的错误使用:
use std::mem::MaybeUninit;
let mut x = MaybeUninit::<Vec<u32>>::uninit();
let x_vec = unsafe { &mut *x.as_mut_ptr() };
// We have created a reference to an uninitialized vector! This is undefined behavior. ⚠️
(请注意,有关对未初始化数据的引用的规则尚未最终确定,但在确定之前,建议避免使用它们。)
相关用法
- Rust MaybeUninit.as_ptr用法及代码示例
- Rust MaybeUninit.assume_init_mut用法及代码示例
- Rust MaybeUninit.assume_init_ref用法及代码示例
- Rust MaybeUninit.assume_init用法及代码示例
- Rust MaybeUninit.assume_init_read用法及代码示例
- Rust MaybeUninit.array_assume_init用法及代码示例
- Rust MaybeUninit.write_slice用法及代码示例
- Rust MaybeUninit.zeroed用法及代码示例
- Rust MaybeUninit.write_slice_cloned用法及代码示例
- Rust MaybeUninit.write用法及代码示例
- Rust MaybeUninit.uninit用法及代码示例
- Rust MaybeUninit.new用法及代码示例
- Rust MaybeUninit.uninit_array用法及代码示例
- Rust MaybeUninit用法及代码示例
- Rust ManuallyDrop用法及代码示例
- Rust ManuallyDrop.into_inner用法及代码示例
- Rust ManuallyDrop.new用法及代码示例
- Rust Map用法及代码示例
- Rust Mutex.new用法及代码示例
- Rust MetadataExt.st_ctime_nsec用法及代码示例
- Rust MetadataExt.mtime_nsec用法及代码示例
- Rust MetadataExt.nlink用法及代码示例
- Rust MulAssign.mul_assign用法及代码示例
- Rust Mutex.get_mut用法及代码示例
- Rust MetadataExt.st_atime用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::mem::MaybeUninit.as_mut_ptr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。