删除功能如何工作?

Ale*_*ria -1 rust

我的代码在那里不起作用!我读了一本 Rust 书。我读到如果你想删除一个值,你可以写 drop(name);

fn main() {
    let n = 1;
    std::mem::drop(n);
    println!("{}", n);
}
Run Code Online (Sandbox Code Playgroud)

它在我的终端上运行,但为什么不n掉线?

Ale*_*nov 6

Rust 有很棒的文档,请查看std::mem::drop. 我链接的这个网页的一些信息:

\n
pub fn drop<T>(_x: T)\n
Run Code Online (Sandbox Code Playgroud)\n
\n

处置一个值。

\n

这是通过调用 Drop 的 argument\xe2\x80\x99s 实现来实现的。

\n

这对于实现 Copy 的类型(例如整数)实际上没有任何作用。这些值被复制然后移动到函数中,因此该值在此函数调用后仍然存在。

\n

这个功能并不神奇;它的字面定义是

\n
pub fn drop<T>(_x: T) { }\n
Run Code Online (Sandbox Code Playgroud)\n

由于 _x 被移入函数中,因此在函数返回之前它会自动删除。

\n
\n

  • 这是一个很好的解释,但我觉得它好像错过了他的问题的要点:“为什么`n`没有被删除”,这是因为`n`是一个`Copy`类型。 (3认同)