小编Ren*_*ato的帖子

Rust 中 Drop 特性的实际用例?

我一直在读 Rust 书,在第 15.3 章中他们介绍了 Drop 特征。它说该特征对于实现智能指针很重要(“对智能指针模式重要的第二个特征是 Drop”),但从提供的示例中我看不出原因:

\n
struct CustomSmartPointer {\n    data: String,\n}\n\nimpl Drop for CustomSmartPointer {\n    fn drop(&mut self) {\n        println!("Dropping CustomSmartPointer with data `{}`!", self.data);\n    }\n}\n\nfn main() {\n    let c = CustomSmartPointer {\n        data: String::from("my stuff"),\n    };\n    let d = CustomSmartPointer {\n        data: String::from("other stuff"),\n    };\n    println!("CustomSmartPointers created.");\n}\n
Run Code Online (Sandbox Code Playgroud)\n

他们只是在容器超出范围之前打印容器拥有的值(根据我的理解,无论如何它都会被删除)。

\n

关于这一点,他们说:“我们\xe2\x80\x99在这里打印一些文本,以直观地演示 Rust 何时调用 drop。”

\n

是的,但是没有提供任何示例来说明该特征实际上如何有用(我猜,除了可能释放的日志资源之外)。

\n

所以我的问题是:在这种情况下 Drop 实现有何重要性?忽略它是否会导致内存泄漏或其他问题?我觉得我完全没有抓住要点。有人可以提供一个用例,除了在值超出范围之前打印值之外,还可以执行其他操作吗?

\n

我尝试删除 drop 实现,但这并没有改变任何内容,除了当 CustomSmartPointer 超出范围时没有打印任何内容。没有编译器错误。

\n

pointers smart-pointers rust

0
推荐指数
1
解决办法
302
查看次数

标签 统计

pointers ×1

rust ×1

smart-pointers ×1