Got it. I always forget that unsafe only refers to memory access, not general behavior.
As a result, not running destructors is not considered unsafe, so this function was introduced as safe.
Just for complete correctness in case anyone comes across this thread later, this isn’t always true. Failing to call a destructor before freeing or failing to call a destructor on drop is unsafe. there is no guarantee that a destructor will ever be called.