Initializing a zero-length array leaks the initializer · Issue #74836 · rust-lang/rust (original) (raw)
This bug was reported on StackOverflow today. Filipe Rodrigues noticed that the initializer of a zero-length array is leaked:
#[derive(PartialEq, Debug)] struct A;
impl Drop for A { fn drop(&mut self) { println!("Dropping A"); } }
fn main() { let vec: Vec = vec![]; let a = A; assert_eq!(vec, [a; 0]); }
The code above does not run drop()
for a
, while I'd expect that it should. According to a comment by @mcarton, this regression occurred between Rust 1.11.0 and 1.12.0, i.e. when MIR code generation was enabled by default.