【发布时间】:2021-07-18 05:14:11
【问题描述】:
更新问题:
或者我可以这样问:对于每个类型T,如果它是Copy,那么它就无法移动,对吧?我的意思是有没有像 C++ 中的 std::move 这样的方法可以显式移动可复制值?
原问题:
假设我们有一段 Rust 代码,在这段代码中,我定义了一个变量 x 持有 i32 值。我想要做的是降低它的价值并使其无效。我尝试使用ptr::drop_in_place 通过指针将其删除,但它不起作用,为什么?
fn main() {
let mut x = 10;
use std::ptr;
unsafe {
ptr::drop_in_place(&mut x as *mut i32);
}
println!("{}", x); // x is still accessible here.
}
【问题讨论】:
-
我不确定您所做的是否安全,但我也不确定您想要实现什么。
i32没有任何 drop behavior。 -
那么,对于每一个类型的T来说,如果它是
Copy,那么它就没有办法被移动了,对吧?
标签: rust