Rust笔记 - drop trait

353 阅读1分钟

在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