pub unsafe extern "rust-intrinsic" fn drop_in_place<T>(to_drop: *mut T) where T: ?Sized
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.
This has all the same safety problems as ptr::read
with respect to invalid pointers, types, and double drops.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ptr/fn.drop_in_place.html