I see that Uninitialized Memory - The Rustonomicon states that
All runtime-allocated memory in a Rust program begins its life as uninitialized . In this state the value of the memory is an indeterminate pile of bits that may or may not even reflect a valid state for the type that is supposed to inhabit that location of memory. Attempting to interpret this memory as a value of any type will cause Undefined Behavior.
I am assuming that drop
somehow interprets the memory - which is UB. If so, why does drop
have to interpret the memory at all - initialized or uninitialized?