设计模式
在析构器中做最终处理
Description
Rust中,通常在析构函数中运行退出前必须运行的代码。
Example
#[derive(Debug)]struct A(u8);impl Drop for A {fn drop(&mut self) {println!("A exit");}}struct B(u8);impl Drop for B {fn drop(&mut self) {println!("B exit");}}fn main() {let a: A = A(1);{let b: B = B(1);println!("a: {:?}", a);println!("b: {:?}", b);}panic!("error"); // 之后A的drop函数有执行}
注意
需要注意的是,析构函数中的drop不能写panic!,否则panic!往后的操作可能没有执行,需要释放的资源没有释放掉。