3.2.6 forget 与 drop 函数
06-forget 与 drop 函数 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
3.2.6 forget 与 drop 函数
| |
mem::forget()与mem::drop()都取得值t的所有权。尽管函数签名相同,它们的效果相反:
forget()使用ManuallyDrop阻止调用析构函数Drop::drop()。这在实现 drop bomb 或主动退出析构行为等场景中很有用。
但要小心:该值独占拥有的任何资源(如堆分配内存或文件句柄)将处于不可达状态。
drop()是丢弃值的便捷函数。因为t被移入函数,会在父函数返回前自动被 drop,从而触发其Drop::drop()实现。