error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
  --> $DIR/move-out-of-array-ref.rs:8:24
   |
LL |     let [_, e, _, _] = *a;
   |             -          ^^ cannot move out of here
   |             |
   |             data moved here
   |             move occurs because `e` has type `D`, which does not implement the `Copy` trait
   |
help: consider removing the dereference here
   |
LL -     let [_, e, _, _] = *a;
LL +     let [_, e, _, _] = a;
   |

error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
  --> $DIR/move-out-of-array-ref.rs:13:27
   |
LL |     let [_, s @ .. , _] = *a;
   |             -             ^^ cannot move out of here
   |             |
   |             data moved here
   |             move occurs because `s` has type `[D; 2]`, which does not implement the `Copy` trait
   |
help: consider removing the dereference here
   |
LL -     let [_, s @ .. , _] = *a;
LL +     let [_, s @ .. , _] = a;
   |

error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
  --> $DIR/move-out-of-array-ref.rs:18:24
   |
LL |     let [_, e, _, _] = *a;
   |             -          ^^ cannot move out of here
   |             |
   |             data moved here
   |             move occurs because `e` has type `D`, which does not implement the `Copy` trait
   |
help: consider removing the dereference here
   |
LL -     let [_, e, _, _] = *a;
LL +     let [_, e, _, _] = a;
   |

error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
  --> $DIR/move-out-of-array-ref.rs:23:27
   |
LL |     let [_, s @ .. , _] = *a;
   |             -             ^^ cannot move out of here
   |             |
   |             data moved here
   |             move occurs because `s` has type `[D; 2]`, which does not implement the `Copy` trait
   |
help: consider removing the dereference here
   |
LL -     let [_, s @ .. , _] = *a;
LL +     let [_, s @ .. , _] = a;
   |

error: aborting due to 4 previous errors

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