foo.drop() currently errors with explicit call to destructor, which is good, but the error does not fire for UFCS-style Drop::drop(&mut foo) calls, leading to the ability to call a value’s destructor more than once:
struct Bass;
impl Drop for Bass {
    fn drop(&mut self) {
        println!("D-D-D-D-DROP THE BASS");
    }
}
fn main() {
    let mut bass = Bass;
    Drop::drop(&mut bass);
    Drop::drop(&mut bass);
    Drop::drop(&mut bass);
}