为什么通过指向移动变量的指针写入在Rust中没有被确定为UB?

我正在调查阻止 Rust 编译器优化某些代码片段的可能原因。我在 rust-lang 的一个 issue 中发现了这条评论,它提醒了我。

我们不能优化可变借用的局部变量的存储,因为正如@matthewjasper 在 #61430 中指出的那样,并没有决定以下是 UB:

let mut x = String::new();
let p = &mut x as *mut String;
let y = x;
p.write(String::new());

我认为x当它移动到y. p.write()通过时晃来晃去。但为什么这不决定为UB?

以上是为什么通过指向移动变量的指针写入在Rust中没有被确定为UB?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>