Memory management 什么时候应该为类型编写Drop特性的实现?

Memory management 什么时候应该为类型编写Drop特性的实现?,memory-management,rust,traits,Memory Management,Rust,Traits,我正在通过写一些链表来解释生锈的基本原理。在中,作者解释了为什么我们可能希望为自定义类型实现Drop特性,声明对该类型的析构函数的自动处理不好 这一切都很好,但是为什么以及什么时候应该为我自己的自定义类型实现Drop特性呢?我甚至没有想到上面的场景(如书中提到的)需要它。什么时候我应该让Rust自己处理析构函数?这与您在其他任何时候编写代码的原因相同-当您需要执行非默认行为时。在本例中,默认行为是对所有包含的项递归调用drop。然后你自己实现Drop。@Shepmaster:这不是默认行为,而是

我正在通过写一些链表来解释生锈的基本原理。在中,作者解释了为什么我们可能希望为自定义类型实现
Drop
特性,声明对该类型的析构函数的自动处理不好


这一切都很好,但是为什么以及什么时候应该为我自己的自定义类型实现
Drop
特性呢?我甚至没有想到上面的场景(如书中提到的)需要它。什么时候我应该让Rust自己处理析构函数?

这与您在其他任何时候编写代码的原因相同-当您需要执行非默认行为时。在本例中,默认行为是对所有包含的项递归调用
drop
。然后你自己实现
Drop
。@Shepmaster:这不是默认行为,而是唯一的行为。实现
Drop
还需要做其他事情。(好的,您可以对
self
进行变异,以更改所包含对象的情况,这样您就可以通过包装
选项
并用
替换某些值,从而有效地防止
删除
,但我保留我的位置。)