error[E0382]: use of moved value: `a`
  --> $DIR/move-into-dead-array-2.rs:14:5
   |
LL | fn foo(mut a: [D; 4], i: usize) {
   |        ----- move occurs because `a` has type `[D; 4]`, which does not implement the `Copy` trait
LL |     drop(a);
   |          - value moved here
LL |     a[i] = d();
   |     ^^^^ value used here after move

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.