rust-clippy icon indicating copy to clipboard operation
rust-clippy copied to clipboard

`mem_forget` checks if a type implements `Drop`

Open kadiwa4 opened this issue 2 years ago • 0 comments

Description

mem_forget currently only triggers if the type passed to mem::forget implements Drop.

However, if a type doesn't implement Drop, then that doesn't mean it lacks destructor code. For instance, String and HashMap currently don't implement it.

Instead, core::mem::needs_drop::<T>() is usually used to check if dropping a T invokes a destructor (the compiler-internal equivalent is rustc_middle::ty::Ty::needs_drop). It is already being used for (drop|forget)_non_drop and let_underscore_drop, but it is actually intended for optimization purposes only; it might spuriously return true. I don't know if it is the right thing to use here.

Version

No response

Additional Labels

@rustbot label: +C-enhancement

kadiwa4 avatar Aug 07 '22 18:08 kadiwa4