Rust Drop特型:资源清理的自动魔法
掌握Drop特型,实现自定义的资源释放逻辑 · 难度:入门 · +15XP
Drop特型概述
当变量离开作用域时,Rust会自动调用drop方法释放资源。通过实现Drop特型,你可以自定义清理逻辑。
基本用法
struct CustomResource {
name: String,
}
impl Drop for CustomResource {
fn drop(&mut self) {
println!("释放资源: {}", self.name);
}
}
fn main() {
let res = CustomResource { name: String::from("文件") };
println!("使用资源");
} // 此处自动调用drop
Drop与所有权
| 操作 | 影响 |
|---|---|
| 变量离开作用域 | 自动drop |
| std::mem::drop | 提前释放 |
| 所有权转移 | 原变量不再drop |
注意事项
- Drop方法不能显式调用(除了drop函数)
- Drop特型不能派生
- Drop实现不影响Copy/Clone
练习提示:实现一个计数器,每次drop时打印信息,并观察作用域结束时的调用顺序。