error[E0382]: use of moved value --> $DIR/borrowck-move-and-move.rs:11:9 | LL | let a @ b = U; | ^ - - move occurs because value has type `U`, which does not implement the `Copy` trait | | | | | value moved here | value used here after move | help: borrow this binding in the pattern to avoid moving the value | LL | let ref a @ ref b = U; | +++ +++ error[E0382]: use of partially moved value --> $DIR/borrowck-move-and-move.rs:13:9 | LL | let a @ (b, c) = (U, U); | ^ - value partially moved here | | | value used here after partial move | = note: partial move occurs because value has type `U`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | let ref a @ (b, ref c) = (U, U); | +++ +++ error[E0382]: use of partially moved value --> $DIR/borrowck-move-and-move.rs:15:9 | LL | let a @ (b, c) = (u(), u()); | ^ - value partially moved here | | | value used here after partial move | = note: partial move occurs because value has type `U`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | let ref a @ (b, ref c) = (u(), u()); | +++ +++ error[E0382]: use of moved value --> $DIR/borrowck-move-and-move.rs:18:16 | LL | match Ok(U) { | ----- move occurs because value has type `Result`, which does not implement the `Copy` trait LL | a @ Ok(b) | a @ Err(b) => {} | - ^ value used here after move | | | value moved here | help: borrow this binding in the pattern to avoid moving the value | LL | ref a @ Ok(b) | a @ Err(b) => {} | +++ error[E0382]: use of moved value --> $DIR/borrowck-move-and-move.rs:18:29 | LL | match Ok(U) { | ----- move occurs because value has type `Result`, which does not implement the `Copy` trait LL | a @ Ok(b) | a @ Err(b) => {} | - ^ value used here after move | | | value moved here | help: borrow this binding in the pattern to avoid moving the value | LL | a @ Ok(b) | ref a @ Err(b) => {} | +++ error[E0382]: use of partially moved value --> $DIR/borrowck-move-and-move.rs:25:9 | LL | xs @ [a, .., b] => {} | ^^ - value partially moved here | | | value used here after partial move | = note: partial move occurs because value has type `U`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | ref xs @ [a, .., ref b] => {} | +++ +++ error[E0382]: use of partially moved value --> $DIR/borrowck-move-and-move.rs:29:9 | LL | xs @ [_, ys @ .., _] => {} | ^^ -- value partially moved here | | | value used here after partial move | = note: partial move occurs because value has type `U`, which does not implement the `Copy` trait help: borrow this binding in the pattern to avoid moving the value | LL | ref xs @ [_, ref ys @ .., _] => {} | +++ +++ error[E0382]: use of moved value --> $DIR/borrowck-move-and-move.rs:22:12 | LL | fn fun(a @ b: U) {} | ^ - value moved here | | | value used here after move | move occurs because value has type `U`, which does not implement the `Copy` trait error: aborting due to 8 previous errors For more information about this error, try `rustc --explain E0382`.