在Rust中drop trait 是在一个变量离开作用域后被调用的,一般用于finalize操作。下面看一下定义:
trait Drop {
fn drop(&mut self);
}
下面看一个实现的例子:
struct Any {
v: Vec<i32>,
}
impl Drop for Any {
fn drop(&mut self) {
println!("v: {:?}", self.v);
}
}
fn main() {
let a = Any {
v: vec![1, 2, 3],
};
{
let _b = Any {
v: vec![4, 5, 6],
};
println!("b exit scope");
}
std::mem::drop(a);
println!("program exit");
}
输出:
b exit scope
v: [4, 5, 6]
v: [1, 2, 3]
program exit