diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/binop/binop-move-semantics.stderr | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/binop/binop-move-semantics.stderr')
-rw-r--r-- | tests/ui/binop/binop-move-semantics.stderr | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/tests/ui/binop/binop-move-semantics.stderr b/tests/ui/binop/binop-move-semantics.stderr new file mode 100644 index 000000000..dae267da0 --- /dev/null +++ b/tests/ui/binop/binop-move-semantics.stderr @@ -0,0 +1,118 @@ +error[E0382]: use of moved value: `x` + --> $DIR/binop-move-semantics.rs:8:5 + | +LL | fn double_move<T: Add<Output=()>>(x: T) { + | - move occurs because `x` has type `T`, which does not implement the `Copy` trait +LL | / x +LL | | + +LL | | x; + | | ^ + | | | + | |_____value used here after move + | `x` moved due to usage in operator + | +note: calling this operator moves the left-hand side + --> $SRC_DIR/core/src/ops/arith.rs:LL:COL +help: consider further restricting this bound + | +LL | fn double_move<T: Add<Output=()> + Copy>(x: T) { + | ++++++ + +error[E0382]: borrow of moved value: `x` + --> $DIR/binop-move-semantics.rs:14:5 + | +LL | fn move_then_borrow<T: Add<Output=()> + 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 cloning the value if the performance cost is acceptable + | +LL | x.clone() + | ++++++++ +help: consider further restricting this bound + | +LL | fn move_then_borrow<T: Add<Output=()> + Clone + Copy>(x: T) { + | ++++++ + +error[E0505]: cannot move out of `x` because it is borrowed + --> $DIR/binop-move-semantics.rs:21:5 + | +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/binop-move-semantics.rs:23:5 + | +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/binop-move-semantics.rs:30:5 + | +LL | *m + | -^ + | | + | _____move occurs because `*m` has type `T`, which does not implement the `Copy` trait + | | +LL | | + +LL | | *n; + | |______- `*m` moved due to usage in operator + | +note: calling this operator moves the left-hand side + --> $SRC_DIR/core/src/ops/arith.rs:LL:COL + +error[E0507]: cannot move out of `*n` which is behind a shared reference + --> $DIR/binop-move-semantics.rs:32:5 + | +LL | *n; + | ^^ move occurs because `*n` has type `T`, which does not implement the `Copy` trait + +error[E0502]: cannot borrow `f` as immutable because it is also borrowed as mutable + --> $DIR/binop-move-semantics.rs:54:5 + | +LL | &mut f + | ------ + | | + | _____mutable borrow occurs here + | | +LL | | + +LL | | &f; + | | ^- + | |_____|| + | |mutable borrow later used here + | immutable borrow occurs here + +error[E0502]: cannot borrow `f` as mutable because it is also borrowed as immutable + --> $DIR/binop-move-semantics.rs:62:5 + | +LL | &f + | -- + | | + | _____immutable borrow occurs here + | | +LL | | + +LL | | &mut f; + | | ^^^^^- + | |_____|____| + | | immutable borrow later used here + | mutable borrow occurs here + +error: aborting due to 8 previous errors + +Some errors have detailed explanations: E0382, E0502, E0505, E0507. +For more information about an error, try `rustc --explain E0382`. |