Alternatively, one could call the treatment of zero’ed data undefined behavior, or call the contents of the memory that the dropped variable occupied “undefined”, and consider programs that rely on this behavior (such as the current implementation of sift_up) to have a bug that just-so-happens to work in current Rust. In that case, sift_up (and other problem cases in the standard library) should be fixed pre-1.0, but it isn’t necessary to fully remove zeroing now.
It’s probably my C background showing, but I actually like having specific areas of UB in a language, since they give the compiler more freedom to optimize.