| error[E0382]: borrow of moved value: `x` |
| --> $DIR/unop-move-semantics.rs:8:5 |
| | |
| LL | fn move_then_borrow<T: Not<Output=T> + Clone>(x: T) { |
| | - move occurs because `x` has type `T`, which does not implement the `Copy` trait |
| LL | !x; |
| | - value moved here |
| LL | |
| LL | x.clone(); |
| | ^ value borrowed here after move |
| | |
| help: consider further restricting this bound with `+ Copy` |
| --> $DIR/unop-move-semantics.rs:5:24 |
| | |
| LL | fn move_then_borrow<T: Not<Output=T> + Clone>(x: T) { |
| | ^^^^^^^^^^^^^^^^^^^^^ |
| |
| error[E0505]: cannot move out of `x` because it is borrowed |
| --> $DIR/unop-move-semantics.rs:15:6 |
| | |
| LL | let m = &x; |
| | -- borrow of `x` occurs here |
| ... |
| LL | !x; |
| | ^ move out of `x` occurs here |
| ... |
| LL | use_mut(n); use_imm(m); |
| | - borrow later used here |
| |
| error[E0505]: cannot move out of `y` because it is borrowed |
| --> $DIR/unop-move-semantics.rs:17:6 |
| | |
| LL | let n = &mut y; |
| | ------ borrow of `y` occurs here |
| ... |
| LL | !y; |
| | ^ move out of `y` occurs here |
| LL | use_mut(n); use_imm(m); |
| | - borrow later used here |
| |
| error[E0507]: cannot move out of `*m` which is behind a mutable reference |
| --> $DIR/unop-move-semantics.rs:24:6 |
| | |
| LL | !*m; |
| | ^^ move occurs because `*m` has type `T`, which does not implement the `Copy` trait |
| |
| error[E0507]: cannot move out of `*n` which is behind a shared reference |
| --> $DIR/unop-move-semantics.rs:26:6 |
| | |
| LL | !*n; |
| | ^^ move occurs because `*n` has type `T`, which does not implement the `Copy` trait |
| |
| error: aborting due to 5 previous errors |
| |
| Some errors have detailed explanations: E0382, E0505, E0507. |
| For more information about an error, try `rustc --explain E0382`. |