summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/dont-suggest-ref
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/suggestions/dont-suggest-ref')
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs150
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr262
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs159
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr343
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/simple.rs364
-rw-r--r--src/test/ui/suggestions/dont-suggest-ref/simple.stderr680
6 files changed, 0 insertions, 1958 deletions
diff --git a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs b/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs
deleted file mode 100644
index bf0c1dc27..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.rs
+++ /dev/null
@@ -1,150 +0,0 @@
-#[derive(Clone)]
-enum Either {
- One(X),
- Two(X),
-}
-
-#[derive(Clone)]
-struct X(Y);
-
-#[derive(Clone)]
-struct Y;
-
-
-pub fn main() {
- let e = Either::One(X(Y));
- let mut em = Either::One(X(Y));
-
- let r = &e;
- let rm = &mut Either::One(X(Y));
-
- let x = X(Y);
- let mut xm = X(Y);
-
- let s = &x;
- let sm = &mut X(Y);
-
- let ve = vec![Either::One(X(Y))];
-
- let vr = &ve;
- let vrm = &mut vec![Either::One(X(Y))];
-
- let vx = vec![X(Y)];
-
- let vs = &vx;
- let vsm = &mut vec![X(Y)];
-
- // test for duplicate suggestions
-
- let &(X(_t), X(_u)) = &(x.clone(), x.clone());
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION (X(_t), X(_u))
- if let &(Either::One(_t), Either::Two(_u)) = &(e.clone(), e.clone()) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- while let &(Either::One(_t), Either::Two(_u)) = &(e.clone(), e.clone()) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- match &(e.clone(), e.clone()) {
- //~^ ERROR cannot move
- &(Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- &(Either::Two(_t), Either::One(_u)) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION (Either::Two(_t), Either::One(_u))
- _ => (),
- }
- match &(e.clone(), e.clone()) {
- //~^ ERROR cannot move
- &(Either::One(_t), Either::Two(_u))
- //~^ HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- | &(Either::Two(_t), Either::One(_u)) => (),
- // FIXME: would really like a suggestion here too
- _ => (),
- }
- match &(e.clone(), e.clone()) {
- //~^ ERROR cannot move
- &(Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- &(Either::Two(ref _t), Either::One(ref _u)) => (),
- _ => (),
- }
- match &(e.clone(), e.clone()) {
- //~^ ERROR cannot move
- &(Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- (Either::Two(_t), Either::One(_u)) => (),
- _ => (),
- }
- fn f5(&(X(_t), X(_u)): &(X, X)) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION (X(_t), X(_u))
-
- let &mut (X(_t), X(_u)) = &mut (xm.clone(), xm.clone());
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION (X(_t), X(_u))
- if let &mut (Either::One(_t), Either::Two(_u)) = &mut (em.clone(), em.clone()) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- while let &mut (Either::One(_t), Either::Two(_u)) = &mut (em.clone(), em.clone()) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- match &mut (em.clone(), em.clone()) {
- //~^ ERROR cannot move
- &mut (Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- &mut (Either::Two(_t), Either::One(_u)) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::Two(_t), Either::One(_u))
- _ => (),
- }
- match &mut (em.clone(), em.clone()) {
- //~^ ERROR cannot move
- &mut (Either::One(_t), Either::Two(_u))
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- | &mut (Either::Two(_t), Either::One(_u)) => (),
- // FIXME: would really like a suggestion here too
- _ => (),
- }
- match &mut (em.clone(), em.clone()) {
- //~^ ERROR cannot move
- &mut (Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- &mut (Either::Two(ref _t), Either::One(ref _u)) => (),
- _ => (),
- }
- match &mut (em.clone(), em.clone()) {
- //~^ ERROR cannot move
- &mut (Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- &mut (Either::Two(ref mut _t), Either::One(ref mut _u)) => (),
- _ => (),
- }
- match &mut (em.clone(), em.clone()) {
- //~^ ERROR cannot move
- &mut (Either::One(_t), Either::Two(_u)) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION (Either::One(_t), Either::Two(_u))
- (Either::Two(_t), Either::One(_u)) => (),
- _ => (),
- }
- fn f6(&mut (X(_t), X(_u)): &mut (X, X)) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION (X(_t), X(_u))
-}
diff --git a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr b/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr
deleted file mode 100644
index 40ad671f9..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/duplicate-suggestions.stderr
+++ /dev/null
@@ -1,262 +0,0 @@
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:39:27
- |
-LL | let &(X(_t), X(_u)) = &(x.clone(), x.clone());
- | --------------- ^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(X(_t), X(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:43:50
- |
-LL | if let &(Either::One(_t), Either::Two(_u)) = &(e.clone(), e.clone()) { }
- | ----------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:47:53
- |
-LL | while let &(Either::One(_t), Either::Two(_u)) = &(e.clone(), e.clone()) { }
- | ----------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:51:11
- |
-LL | match &(e.clone(), e.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &(Either::One(_t), Either::Two(_u)) => (),
- | -- -- ...and here
- | |
- | data moved here
-...
-LL | &(Either::Two(_t), Either::One(_u)) => (),
- | -- ...and here -- ...and here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-help: consider removing the `&`
- |
-LL | (Either::One(_t), Either::Two(_u)) => (),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-help: consider removing the `&`
- |
-LL | (Either::Two(_t), Either::One(_u)) => (),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:61:11
- |
-LL | match &(e.clone(), e.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &(Either::One(_t), Either::Two(_u))
- | -- -- ...and here
- | |
- | data moved here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-help: consider removing the `&`
- |
-LL ~ (Either::One(_t), Either::Two(_u))
-LL +
-LL +
-LL ~ | &(Either::Two(_t), Either::One(_u)) => (),
- |
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:70:11
- |
-LL | match &(e.clone(), e.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &(Either::One(_t), Either::Two(_u)) => (),
- | -----------------------------------
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:78:11
- |
-LL | match &(e.clone(), e.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &(Either::One(_t), Either::Two(_u)) => (),
- | -----------------------------------
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:91:31
- |
-LL | let &mut (X(_t), X(_u)) = &mut (xm.clone(), xm.clone());
- | ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(X(_t), X(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:95:54
- |
-LL | if let &mut (Either::One(_t), Either::Two(_u)) = &mut (em.clone(), em.clone()) { }
- | --------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:99:57
- |
-LL | while let &mut (Either::One(_t), Either::Two(_u)) = &mut (em.clone(), em.clone()) { }
- | --------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:103:11
- |
-LL | match &mut (em.clone(), em.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &mut (Either::One(_t), Either::Two(_u)) => (),
- | -- -- ...and here
- | |
- | data moved here
-...
-LL | &mut (Either::Two(_t), Either::One(_u)) => (),
- | -- ...and here -- ...and here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-help: consider removing the `&mut`
- |
-LL | (Either::One(_t), Either::Two(_u)) => (),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-help: consider removing the `&mut`
- |
-LL | (Either::Two(_t), Either::One(_u)) => (),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:113:11
- |
-LL | match &mut (em.clone(), em.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &mut (Either::One(_t), Either::Two(_u))
- | -- -- ...and here
- | |
- | data moved here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-help: consider removing the `&mut`
- |
-LL ~ (Either::One(_t), Either::Two(_u))
-LL +
-LL +
-LL ~ | &mut (Either::Two(_t), Either::One(_u)) => (),
- |
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:122:11
- |
-LL | match &mut (em.clone(), em.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &mut (Either::One(_t), Either::Two(_u)) => (),
- | ---------------------------------------
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:130:11
- |
-LL | match &mut (em.clone(), em.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &mut (Either::One(_t), Either::Two(_u)) => (),
- | ---------------------------------------
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:138:11
- |
-LL | match &mut (em.clone(), em.clone()) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-LL |
-LL | &mut (Either::One(_t), Either::Two(_u)) => (),
- | ---------------------------------------
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(Either::One(_t), Either::Two(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/duplicate-suggestions.rs:86:11
- |
-LL | fn f5(&(X(_t), X(_u)): &(X, X)) { }
- | ^^^^--^^^^^--^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&`: `(X(_t), X(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/duplicate-suggestions.rs:146:11
- |
-LL | fn f6(&mut (X(_t), X(_u)): &mut (X, X)) { }
- | ^^^^^^^^--^^^^^--^^
- | | | |
- | | | ...and here
- | | data moved here
- | help: consider removing the `&mut`: `(X(_t), X(_u))`
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error: aborting due to 17 previous errors
-
-For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs b/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs
deleted file mode 100644
index f1e043c30..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.rs
+++ /dev/null
@@ -1,159 +0,0 @@
-#[derive(Clone)]
-enum Either {
- One(X),
- Two(X),
-}
-
-#[derive(Clone)]
-struct X(Y);
-
-#[derive(Clone)]
-struct Y;
-
-fn consume_fn<F: Fn()>(_f: F) { }
-
-fn consume_fnmut<F: FnMut()>(_f: F) { }
-
-pub fn main() { }
-
-fn move_into_fn() {
- let e = Either::One(X(Y));
- let mut em = Either::One(X(Y));
-
- let x = X(Y);
-
- // move into Fn
-
- consume_fn(|| {
- let X(_t) = x;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &x
- if let Either::One(_t) = e { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- while let Either::One(_t) = e { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- match e {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match e {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- let X(mut _t) = x;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &x
- if let Either::One(mut _t) = em { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- while let Either::One(mut _t) = em { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- match em {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- Either::One(mut _t)
- | Either::Two(mut _t) => (),
- }
- match em {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- Either::One(mut _t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
- });
-}
-
-fn move_into_fnmut() {
- let e = Either::One(X(Y));
- let mut em = Either::One(X(Y));
-
- let x = X(Y);
-
- // move into FnMut
-
- consume_fnmut(|| {
- let X(_t) = x;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &x
- if let Either::One(_t) = e { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- while let Either::One(_t) = e { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- match e {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match e {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &e
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- let X(mut _t) = x;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &x
- if let Either::One(mut _t) = em { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- while let Either::One(mut _t) = em { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- match em {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- Either::One(mut _t)
- | Either::Two(mut _t) => (),
- }
- match em {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- Either::One(mut _t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
- match em {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &em
- Either::One(mut _t) => (),
- Either::Two(ref mut _t) => (),
- // FIXME: should suggest removing `ref` too
- }
- });
-}
diff --git a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr b/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr
deleted file mode 100644
index e06ee4290..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/move-into-closure.stderr
+++ /dev/null
@@ -1,343 +0,0 @@
-error[E0507]: cannot move out of `x.0`, as `x` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:28:21
- |
-LL | let x = X(Y);
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-LL | let X(_t) = x;
- | -- ^ help: consider borrowing here: `&x`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:32:34
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | if let Either::One(_t) = e { }
- | -- ^ help: consider borrowing here: `&e`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:36:37
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | while let Either::One(_t) = e { }
- | -- ^ help: consider borrowing here: `&e`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:40:15
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | match e {
- | ^ help: consider borrowing here: `&e`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:47:15
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | match e {
- | ^ help: consider borrowing here: `&e`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `x.0`, as `x` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:56:25
- |
-LL | let x = X(Y);
- | - captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | let X(mut _t) = x;
- | ------ ^ help: consider borrowing here: `&x`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:60:38
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | if let Either::One(mut _t) = em { }
- | ------ ^^ help: consider borrowing here: `&em`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:64:41
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | while let Either::One(mut _t) = em { }
- | ------ ^^ help: consider borrowing here: `&em`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:68:15
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | match em {
- | ^^ help: consider borrowing here: `&em`
-...
-LL | Either::One(mut _t)
- | ------
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `Fn` closure
- --> $DIR/move-into-closure.rs:75:15
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fn(|| {
- | -- captured by this `Fn` closure
-...
-LL | match em {
- | ^^ help: consider borrowing here: `&em`
-...
-LL | Either::One(mut _t) => (),
- | ------
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `x.0`, as `x` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:95:21
- |
-LL | let x = X(Y);
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-LL | let X(_t) = x;
- | -- ^ help: consider borrowing here: `&x`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:99:34
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | if let Either::One(_t) = e { }
- | -- ^ help: consider borrowing here: `&e`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:103:37
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | while let Either::One(_t) = e { }
- | -- ^ help: consider borrowing here: `&e`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:107:15
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | match e {
- | ^ help: consider borrowing here: `&e`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `e.0`, as `e` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:114:15
- |
-LL | let e = Either::One(X(Y));
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | match e {
- | ^ help: consider borrowing here: `&e`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `x.0`, as `x` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:123:25
- |
-LL | let x = X(Y);
- | - captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | let X(mut _t) = x;
- | ------ ^ help: consider borrowing here: `&x`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:127:38
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | if let Either::One(mut _t) = em { }
- | ------ ^^ help: consider borrowing here: `&em`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:131:41
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | while let Either::One(mut _t) = em { }
- | ------ ^^ help: consider borrowing here: `&em`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:135:15
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | match em {
- | ^^ help: consider borrowing here: `&em`
-...
-LL | Either::One(mut _t)
- | ------
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:142:15
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | match em {
- | ^^ help: consider borrowing here: `&em`
-...
-LL | Either::One(mut _t) => (),
- | ------
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `em.0`, as `em` is a captured variable in an `FnMut` closure
- --> $DIR/move-into-closure.rs:150:15
- |
-LL | let mut em = Either::One(X(Y));
- | ------ captured outer variable
-...
-LL | consume_fnmut(|| {
- | -- captured by this `FnMut` closure
-...
-LL | match em {
- | ^^ help: consider borrowing here: `&em`
-...
-LL | Either::One(mut _t) => (),
- | ------
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error: aborting due to 21 previous errors
-
-For more information about this error, try `rustc --explain E0507`.
diff --git a/src/test/ui/suggestions/dont-suggest-ref/simple.rs b/src/test/ui/suggestions/dont-suggest-ref/simple.rs
deleted file mode 100644
index c53ac3d2c..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/simple.rs
+++ /dev/null
@@ -1,364 +0,0 @@
-#[derive(Clone)]
-enum Either {
- One(X),
- Two(X),
-}
-
-#[derive(Clone)]
-struct X(Y);
-
-#[derive(Clone)]
-struct Y;
-
-pub fn main() {
- let e = Either::One(X(Y));
- let mut em = Either::One(X(Y));
-
- let r = &e;
- let rm = &mut Either::One(X(Y));
-
- let x = X(Y);
- let mut xm = X(Y);
-
- let s = &x;
- let sm = &mut X(Y);
-
- let ve = vec![Either::One(X(Y))];
-
- let vr = &ve;
- let vrm = &mut vec![Either::One(X(Y))];
-
- let vx = vec![X(Y)];
-
- let vs = &vx;
- let vsm = &mut vec![X(Y)];
-
- // move from Either/X place
-
- let X(_t) = *s;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION s
- if let Either::One(_t) = *r { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION r
- while let Either::One(_t) = *r { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION r
- match *r {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION r
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match *r {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION r
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- let X(_t) = *sm;
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION sm
- if let Either::One(_t) = *rm { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION rm
- while let Either::One(_t) = *rm { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION rm
- match *rm {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION rm
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match *rm {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION rm
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
- match *rm {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION rm
- Either::One(_t) => (),
- Either::Two(ref mut _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- let X(_t) = vs[0];
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vs[0]
- if let Either::One(_t) = vr[0] { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vr[0]
- while let Either::One(_t) = vr[0] { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vr[0]
- match vr[0] {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vr[0]
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match vr[0] {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vr[0]
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- let X(_t) = vsm[0];
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vsm[0]
- if let Either::One(_t) = vrm[0] { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vrm[0]
- while let Either::One(_t) = vrm[0] { }
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vrm[0]
- match vrm[0] {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vrm[0]
- Either::One(_t)
- | Either::Two(_t) => (),
- }
- match vrm[0] {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vrm[0]
- Either::One(_t) => (),
- Either::Two(ref _t) => (),
- // FIXME: should suggest removing `ref` too
- }
- match vrm[0] {
- //~^ ERROR cannot move
- //~| HELP consider borrowing here
- //~| SUGGESTION &vrm[0]
- Either::One(_t) => (),
- Either::Two(ref mut _t) => (),
- // FIXME: should suggest removing `ref` too
- }
-
- // move from &Either/&X place
-
- let &X(_t) = s;
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION X(_t)
- if let &Either::One(_t) = r { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- while let &Either::One(_t) = r { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- match r {
- //~^ ERROR cannot move
- &Either::One(_t)
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- | &Either::Two(_t) => (),
- // FIXME: would really like a suggestion here too
- }
- match r {
- //~^ ERROR cannot move
- &Either::One(_t) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- &Either::Two(ref _t) => (),
- }
- match r {
- //~^ ERROR cannot move
- &Either::One(_t) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- Either::Two(_t) => (),
- }
- fn f1(&X(_t): &X) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION X(_t)
-
- let &mut X(_t) = sm;
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION X(_t)
- if let &mut Either::One(_t) = rm { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- while let &mut Either::One(_t) = rm { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- match rm {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- &mut Either::Two(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::Two(_t)
- }
- match rm {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- &mut Either::Two(ref _t) => (),
- }
- match rm {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- &mut Either::Two(ref mut _t) => (),
- }
- match rm {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- Either::Two(_t) => (),
- }
- fn f2(&mut X(_t): &mut X) { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION X(_t)
-
- // move from tuple of &Either/&X
-
- // FIXME: These should have suggestions.
-
- let (&X(_t),) = (&x.clone(),);
- //~^ ERROR cannot move
- if let (&Either::One(_t),) = (&e.clone(),) { }
- //~^ ERROR cannot move
- while let (&Either::One(_t),) = (&e.clone(),) { }
- //~^ ERROR cannot move
- match (&e.clone(),) {
- //~^ ERROR cannot move
- (&Either::One(_t),)
- | (&Either::Two(_t),) => (),
- }
- fn f3((&X(_t),): (&X,)) { }
- //~^ ERROR cannot move
-
- let (&mut X(_t),) = (&mut xm.clone(),);
- //~^ ERROR cannot move
- if let (&mut Either::One(_t),) = (&mut em.clone(),) { }
- //~^ ERROR cannot move
- while let (&mut Either::One(_t),) = (&mut em.clone(),) { }
- //~^ ERROR cannot move
- match (&mut em.clone(),) {
- //~^ ERROR cannot move
- (&mut Either::One(_t),) => (),
- (&mut Either::Two(_t),) => (),
- }
- fn f4((&mut X(_t),): (&mut X,)) { }
- //~^ ERROR cannot move
-
- // move from &Either/&X value
-
- let &X(_t) = &x;
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION X(_t)
- if let &Either::One(_t) = &e { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- while let &Either::One(_t) = &e { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- match &e {
- //~^ ERROR cannot move
- &Either::One(_t)
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- | &Either::Two(_t) => (),
- // FIXME: would really like a suggestion here too
- }
- match &e {
- //~^ ERROR cannot move
- &Either::One(_t) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- &Either::Two(ref _t) => (),
- }
- match &e {
- //~^ ERROR cannot move
- &Either::One(_t) => (),
- //~^ HELP consider removing the `&`
- //~| SUGGESTION Either::One(_t)
- Either::Two(_t) => (),
- }
-
- let &mut X(_t) = &mut xm;
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION X(_t)
- if let &mut Either::One(_t) = &mut em { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- while let &mut Either::One(_t) = &mut em { }
- //~^ ERROR cannot move
- //~| HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- match &mut em {
- //~^ ERROR cannot move
- &mut Either::One(_t)
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- | &mut Either::Two(_t) => (),
- // FIXME: would really like a suggestion here too
- }
- match &mut em {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- &mut Either::Two(ref _t) => (),
- }
- match &mut em {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- &mut Either::Two(ref mut _t) => (),
- }
- match &mut em {
- //~^ ERROR cannot move
- &mut Either::One(_t) => (),
- //~^ HELP consider removing the `&mut`
- //~| SUGGESTION Either::One(_t)
- Either::Two(_t) => (),
- }
-}
diff --git a/src/test/ui/suggestions/dont-suggest-ref/simple.stderr b/src/test/ui/suggestions/dont-suggest-ref/simple.stderr
deleted file mode 100644
index e5443290f..000000000
--- a/src/test/ui/suggestions/dont-suggest-ref/simple.stderr
+++ /dev/null
@@ -1,680 +0,0 @@
-error[E0507]: cannot move out of `s` which is behind a shared reference
- --> $DIR/simple.rs:38:17
- |
-LL | let X(_t) = *s;
- | -- ^^ help: consider borrowing here: `&*s`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:42:30
- |
-LL | if let Either::One(_t) = *r { }
- | -- ^^ help: consider borrowing here: `&*r`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:46:33
- |
-LL | while let Either::One(_t) = *r { }
- | -- ^^ help: consider borrowing here: `&*r`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `r` as enum variant `Two` which is behind a shared reference
- --> $DIR/simple.rs:50:11
- |
-LL | match *r {
- | ^^ help: consider borrowing here: `&*r`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:57:11
- |
-LL | match *r {
- | ^^ help: consider borrowing here: `&*r`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `sm` which is behind a mutable reference
- --> $DIR/simple.rs:66:17
- |
-LL | let X(_t) = *sm;
- | -- ^^^ help: consider borrowing here: `&*sm`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:70:30
- |
-LL | if let Either::One(_t) = *rm { }
- | -- ^^^ help: consider borrowing here: `&*rm`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:74:33
- |
-LL | while let Either::One(_t) = *rm { }
- | -- ^^^ help: consider borrowing here: `&*rm`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `rm` as enum variant `Two` which is behind a mutable reference
- --> $DIR/simple.rs:78:11
- |
-LL | match *rm {
- | ^^^ help: consider borrowing here: `&*rm`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:85:11
- |
-LL | match *rm {
- | ^^^ help: consider borrowing here: `&*rm`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:93:11
- |
-LL | match *rm {
- | ^^^ help: consider borrowing here: `&*rm`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<X>`
- --> $DIR/simple.rs:102:17
- |
-LL | let X(_t) = vs[0];
- | -- ^^^^^ help: consider borrowing here: `&vs[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:106:30
- |
-LL | if let Either::One(_t) = vr[0] { }
- | -- ^^^^^ help: consider borrowing here: `&vr[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:110:33
- |
-LL | while let Either::One(_t) = vr[0] { }
- | -- ^^^^^ help: consider borrowing here: `&vr[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:114:11
- |
-LL | match vr[0] {
- | ^^^^^ help: consider borrowing here: `&vr[0]`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:121:11
- |
-LL | match vr[0] {
- | ^^^^^ help: consider borrowing here: `&vr[0]`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<X>`
- --> $DIR/simple.rs:130:17
- |
-LL | let X(_t) = vsm[0];
- | -- ^^^^^^ help: consider borrowing here: `&vsm[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:134:30
- |
-LL | if let Either::One(_t) = vrm[0] { }
- | -- ^^^^^^ help: consider borrowing here: `&vrm[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:138:33
- |
-LL | while let Either::One(_t) = vrm[0] { }
- | -- ^^^^^^ help: consider borrowing here: `&vrm[0]`
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:142:11
- |
-LL | match vrm[0] {
- | ^^^^^^ help: consider borrowing here: `&vrm[0]`
-...
-LL | Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:149:11
- |
-LL | match vrm[0] {
- | ^^^^^^ help: consider borrowing here: `&vrm[0]`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of index of `Vec<Either>`
- --> $DIR/simple.rs:157:11
- |
-LL | match vrm[0] {
- | ^^^^^^ help: consider borrowing here: `&vrm[0]`
-...
-LL | Either::One(_t) => (),
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of `s` which is behind a shared reference
- --> $DIR/simple.rs:168:18
- |
-LL | let &X(_t) = s;
- | ------ ^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `X(_t)`
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:172:31
- |
-LL | if let &Either::One(_t) = r { }
- | ---------------- ^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:176:34
- |
-LL | while let &Either::One(_t) = r { }
- | ---------------- ^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `r` as enum variant `Two` which is behind a shared reference
- --> $DIR/simple.rs:180:11
- |
-LL | match r {
- | ^
-LL |
-LL | &Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- |
-help: consider removing the `&`
- |
-LL ~ Either::One(_t)
-LL +
-LL +
-LL ~ | &Either::Two(_t) => (),
- |
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:188:11
- |
-LL | match r {
- | ^
-LL |
-LL | &Either::One(_t) => (),
- | ----------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `r` as enum variant `One` which is behind a shared reference
- --> $DIR/simple.rs:195:11
- |
-LL | match r {
- | ^
-LL |
-LL | &Either::One(_t) => (),
- | ----------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `sm` which is behind a mutable reference
- --> $DIR/simple.rs:207:22
- |
-LL | let &mut X(_t) = sm;
- | ---------- ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `X(_t)`
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:211:35
- |
-LL | if let &mut Either::One(_t) = rm { }
- | -------------------- ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:215:38
- |
-LL | while let &mut Either::One(_t) = rm { }
- | -------------------- ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `rm` as enum variant `Two` which is behind a mutable reference
- --> $DIR/simple.rs:219:11
- |
-LL | match rm {
- | ^^
-LL |
-LL | &mut Either::One(_t) => (),
- | -- data moved here
-...
-LL | &mut Either::Two(_t) => (),
- | -- ...and here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-help: consider removing the `&mut`
- |
-LL | Either::One(_t) => (),
- | ~~~~~~~~~~~~~~~
-help: consider removing the `&mut`
- |
-LL | Either::Two(_t) => (),
- | ~~~~~~~~~~~~~~~
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:228:11
- |
-LL | match rm {
- | ^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:235:11
- |
-LL | match rm {
- | ^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mutable reference
- --> $DIR/simple.rs:242:11
- |
-LL | match rm {
- | ^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:258:21
- |
-LL | let (&X(_t),) = (&x.clone(),);
- | -- ^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:260:34
- |
-LL | if let (&Either::One(_t),) = (&e.clone(),) { }
- | -- ^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:262:37
- |
-LL | while let (&Either::One(_t),) = (&e.clone(),) { }
- | -- ^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:264:11
- |
-LL | match (&e.clone(),) {
- | ^^^^^^^^^^^^^
-LL |
-LL | (&Either::One(_t),)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:272:25
- |
-LL | let (&mut X(_t),) = (&mut xm.clone(),);
- | -- ^^^^^^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:274:38
- |
-LL | if let (&mut Either::One(_t),) = (&mut em.clone(),) { }
- | -- ^^^^^^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:276:41
- |
-LL | while let (&mut Either::One(_t),) = (&mut em.clone(),) { }
- | -- ^^^^^^^^^^^^^^^^^^
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:278:11
- |
-LL | match (&mut em.clone(),) {
- | ^^^^^^^^^^^^^^^^^^
-LL |
-LL | (&mut Either::One(_t),) => (),
- | -- data moved here
-LL | (&mut Either::Two(_t),) => (),
- | -- ...and here
- |
- = note: move occurs because these variables have types that don't implement the `Copy` trait
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:288:18
- |
-LL | let &X(_t) = &x;
- | ------ ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `X(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:292:31
- |
-LL | if let &Either::One(_t) = &e { }
- | ---------------- ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:296:34
- |
-LL | while let &Either::One(_t) = &e { }
- | ---------------- ^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:300:11
- |
-LL | match &e {
- | ^^
-LL |
-LL | &Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- |
-help: consider removing the `&`
- |
-LL ~ Either::One(_t)
-LL +
-LL +
-LL ~ | &Either::Two(_t) => (),
- |
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:308:11
- |
-LL | match &e {
- | ^^
-LL |
-LL | &Either::One(_t) => (),
- | ----------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:315:11
- |
-LL | match &e {
- | ^^
-LL |
-LL | &Either::One(_t) => (),
- | ----------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:323:22
- |
-LL | let &mut X(_t) = &mut xm;
- | ---------- ^^^^^^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `X(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:327:35
- |
-LL | if let &mut Either::One(_t) = &mut em { }
- | -------------------- ^^^^^^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:331:38
- |
-LL | while let &mut Either::One(_t) = &mut em { }
- | -------------------- ^^^^^^^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:335:11
- |
-LL | match &mut em {
- | ^^^^^^^
-LL |
-LL | &mut Either::One(_t)
- | --
- | |
- | data moved here
- | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- |
-help: consider removing the `&mut`
- |
-LL ~ Either::One(_t)
-LL +
-LL +
-LL ~ | &mut Either::Two(_t) => (),
- |
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:343:11
- |
-LL | match &mut em {
- | ^^^^^^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:350:11
- |
-LL | match &mut em {
- | ^^^^^^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:357:11
- |
-LL | match &mut em {
- | ^^^^^^^
-LL |
-LL | &mut Either::One(_t) => (),
- | --------------------
- | | |
- | | data moved here
- | | move occurs because `_t` has type `X`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `Either::One(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:202:11
- |
-LL | fn f1(&X(_t): &X) { }
- | ^^^--^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&`: `X(_t)`
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:249:11
- |
-LL | fn f2(&mut X(_t): &mut X) { }
- | ^^^^^^^--^
- | | |
- | | data moved here
- | | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
- | help: consider removing the `&mut`: `X(_t)`
-
-error[E0507]: cannot move out of a shared reference
- --> $DIR/simple.rs:269:11
- |
-LL | fn f3((&X(_t),): (&X,)) { }
- | ^^^^--^^^
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error[E0507]: cannot move out of a mutable reference
- --> $DIR/simple.rs:283:11
- |
-LL | fn f4((&mut X(_t),): (&mut X,)) { }
- | ^^^^^^^^--^^^
- | |
- | data moved here
- | move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
-
-error: aborting due to 60 previous errors
-
-For more information about this error, try `rustc --explain E0507`.