error[E0382]: use of moved value: `foo` --> $DIR/issue-17385.rs:18:5 | LL | let foo = X(1); | --- move occurs because `foo` has type `X`, which does not implement the `Copy` trait LL | drop(foo); | --- value moved here LL | match foo { | ^^^^^^^^^ value used here after move | note: if `X` implemented `Clone`, you could clone the value --> $DIR/issue-17385.rs:1:1 | LL | struct X(isize); | ^^^^^^^^ consider implementing `Clone` for this type ... LL | drop(foo); | --- you could clone this value error[E0382]: use of moved value: `e` --> $DIR/issue-17385.rs:25:11 | LL | let e = Enum::Variant2; | - move occurs because `e` has type `Enum`, which does not implement the `Copy` trait LL | drop(e); | - value moved here LL | match e { | ^ value used here after move | note: if `Enum` implemented `Clone`, you could clone the value --> $DIR/issue-17385.rs:3:1 | LL | enum Enum { | ^^^^^^^^^ consider implementing `Clone` for this type ... LL | drop(e); | - you could clone this value error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0382`.