core::intrinsics::drop_in_place
[−]
[src]
pub unsafe extern "rust-intrinsic" fn drop_in_place<T: ?Sized>(to_drop: *mut T)
Executes the destructor (if any) of the pointed-to value.
This has two use cases:
It is required to use
drop_in_place
to drop unsized types like trait objects, because they can't be read out onto the stack and dropped normally.It is friendlier to the optimizer to do this over
ptr::read
when dropping manually allocated memory (e.g. when writing Box/Rc/Vec), as the compiler doesn't need to prove that it's sound to elide the copy.
Undefined Behavior
This has all the same safety problems as ptr::read
with respect to
invalid pointers, types, and double drops.