rust 将&lt;&amp;mut MaybeUninit< T>&gt;固定到&lt;&amp;mut T&gt;

jjhzyzn0  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(98)

假设MaybeUninit<T>已初始化,如何安全地从Pin<&mut MaybeUninit<T>>获取Pin<&mut T>

qzlgjiam

qzlgjiam1#

通过Pin::map_unchecked_mut应该是安全的:

let pin_uninit_t: Pin<&mut MaybeUninit<T>> = ...;
let pin_t: Pin<&mut T> = unsafe { pin_uninit_t.map_unchecked_mut(|m| m.assume_init_mut()) };

字符串
这个函数是unsafe,因为你被赋予了一个不受保护的可变访问权,你不能移动这个值,但是我们没有移动这个值(assume_init_mut是一个简单的引用转换),所以假设MaybeUninit<T>被初始化是安全的。

相关问题