E0040
不允许在 Rust 中手动调用析构函数。
错误代码示例:
struct Foo {
x: i32,
}
impl Drop for Foo {
fn drop(&mut self) {
println!("kaboom");
}
}
fn main() {
let mut x = Foo { x: -7 };
x.drop(); // error: 显示调用析构方法
}
无需这样做,因为当值超出其域的时候会自动调用 drop
方法。然而,如果你真想手动 drop 一个值,可以使用 std::mem ::drop
函数:
struct Foo {
x: i32,
}
impl Drop for Foo {
fn drop(&mut self) {
println!("kaboom");
}
}
fn main() {
let mut x = Foo { x: -7 };
drop(x); // 没问题!
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。