mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Unify same-span labels in move error diagnostics
This commit is contained in:
@@ -990,30 +990,25 @@ fn add_move_error_details(
|
||||
let bind_to = &self.body.local_decls[*local];
|
||||
let binding_span = bind_to.source_info.span;
|
||||
|
||||
if j == 0 {
|
||||
err.span_label(binding_span, "data moved here");
|
||||
} else {
|
||||
err.span_label(binding_span, "...and here");
|
||||
}
|
||||
|
||||
if binds_to.len() == 1 {
|
||||
let place_desc = self.local_name(*local).map(|sym| format!("`{sym}`"));
|
||||
|
||||
if !desugar_spans.contains(&binding_span)
|
||||
&& let Some(expr) = self.find_expr(binding_span)
|
||||
{
|
||||
// The binding_span doesn't correspond to a let binding desugaring
|
||||
// and is an expression where calling `.clone()` would be valid.
|
||||
let local_place: PlaceRef<'tcx> = (*local).into();
|
||||
self.suggest_cloning(err, local_place, bind_to.ty, expr, None);
|
||||
}
|
||||
|
||||
err.subdiagnostic(crate::session_diagnostics::TypeNoCopy::Label {
|
||||
is_partial_move: false,
|
||||
err.subdiagnostic(crate::session_diagnostics::TypeNoCopy::LabelMovedHere {
|
||||
ty: bind_to.ty,
|
||||
place: place_desc.as_deref().unwrap_or("the place"),
|
||||
span: binding_span,
|
||||
});
|
||||
|
||||
if !desugar_spans.contains(&binding_span)
|
||||
&& let Some(expr) = self.find_expr(binding_span)
|
||||
{
|
||||
let local_place: PlaceRef<'tcx> = (*local).into();
|
||||
self.suggest_cloning(err, local_place, bind_to.ty, expr, None);
|
||||
}
|
||||
} else if j == 0 {
|
||||
err.span_label(binding_span, "data moved here");
|
||||
} else {
|
||||
err.span_label(binding_span, "...and here");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -570,6 +570,16 @@ pub(crate) enum TypeNoCopy<'a, 'tcx> {
|
||||
#[primary_span]
|
||||
span: Span,
|
||||
},
|
||||
#[label(
|
||||
"data moved here because {$place} has type `{$ty}`, which does not implement the `Copy` \
|
||||
trait"
|
||||
)]
|
||||
LabelMovedHere {
|
||||
ty: Ty<'tcx>,
|
||||
place: &'a str,
|
||||
#[primary_span]
|
||||
span: Span,
|
||||
},
|
||||
#[note(
|
||||
"{$is_partial_move ->
|
||||
[true] partial move
|
||||
|
||||
@@ -2,10 +2,7 @@ error[E0507]: cannot move out of `s` which is behind a shared reference
|
||||
--> $DIR/access-mode-in-closures.rs:8:15
|
||||
|
|
||||
LL | match *s { S(v) => v }
|
||||
| ^^ -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `v` has type `Vec<isize>`, which does not implement the `Copy` trait
|
||||
| ^^ - data moved here because `v` has type `Vec<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | for &a in x.iter() {
|
||||
| - ^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `a` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
| data moved here because `a` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -19,8 +18,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | for &a in &f.a {
|
||||
| - ^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `a` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
| data moved here because `a` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -34,8 +32,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | for &a in x.iter() {
|
||||
| - ^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `a` has type `Box<i32>`, which does not implement the `Copy` trait
|
||||
| data moved here because `a` has type `Box<i32>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -44,10 +44,7 @@ error[E0507]: cannot move out of `a.a` which is behind a shared reference
|
||||
LL | match a.a {
|
||||
| ^^^
|
||||
LL | n => {
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `n` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
| - data moved here because `n` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | fn arg_item(&_x: &String) {}
|
||||
| ^--
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -19,8 +18,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | with(|&_x| ())
|
||||
| ^--
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -34,8 +32,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let &_x = &"hi".to_string();
|
||||
| -- ^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_x` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match (S {f:"foo".to_string()}) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of here
|
||||
LL |
|
||||
LL | S {f:_s} => {}
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -21,8 +18,7 @@ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
|
||||
LL | let S {f:_s} = S {f:"foo".to_string()};
|
||||
| -- ^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -35,8 +31,7 @@ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
|
||||
LL | fn move_in_fn_arg(S {f:_s}: S) {
|
||||
| ^^^^^--^
|
||||
| | |
|
||||
| | data moved here
|
||||
| | move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| | data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| cannot move out of here
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match S("foo".to_string()) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^ cannot move out of here
|
||||
LL |
|
||||
LL | S(_s) => {}
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -21,8 +18,7 @@ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
|
||||
LL | let S(_s) = S("foo".to_string());
|
||||
| -- ^^^^^^^^^^^^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -35,8 +31,7 @@ error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
|
||||
LL | fn move_in_fn_arg(S(_s): S) {
|
||||
| ^^--^
|
||||
| | |
|
||||
| | data moved here
|
||||
| | move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| | data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| cannot move out of here
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
||||
@@ -35,8 +35,7 @@ fn c() {
|
||||
//~^ ERROR cannot move out
|
||||
//~| NOTE cannot move out
|
||||
&mut [_a,
|
||||
//~^ NOTE data moved here
|
||||
//~| NOTE move occurs because `_a` has type
|
||||
//~^ NOTE data moved here because `_a` has type
|
||||
//~| HELP consider removing the mutable borrow
|
||||
..
|
||||
] => {
|
||||
@@ -59,8 +58,7 @@ fn d() {
|
||||
&mut [
|
||||
//~^ HELP consider removing the mutable borrow
|
||||
_b] => {}
|
||||
//~^ NOTE data moved here
|
||||
//~| NOTE move occurs because `_b` has type
|
||||
//~^ NOTE data moved here because `_b` has type
|
||||
_ => {}
|
||||
}
|
||||
let a = vec[0]; //~ ERROR cannot move out
|
||||
|
||||
@@ -29,10 +29,7 @@ LL | match vec {
|
||||
| ^^^ cannot move out of here
|
||||
...
|
||||
LL | &mut [_a,
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_a` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_a` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -41,7 +38,7 @@ LL + [_a,
|
||||
|
|
||||
|
||||
error[E0508]: cannot move out of type `[Box<isize>]`, a non-copy slice
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:46:13
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:45:13
|
||||
|
|
||||
LL | let a = vec[0];
|
||||
| ^^^^^^
|
||||
@@ -59,16 +56,13 @@ LL | let a = vec[0].clone();
|
||||
| ++++++++
|
||||
|
||||
error[E0508]: cannot move out of type `[Box<isize>]`, a non-copy slice
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:56:11
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:55:11
|
||||
|
|
||||
LL | match vec {
|
||||
| ^^^ cannot move out of here
|
||||
...
|
||||
LL | _b] => {}
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_b` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_b` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -77,7 +71,7 @@ LL + [
|
||||
|
|
||||
|
||||
error[E0508]: cannot move out of type `[Box<isize>]`, a non-copy slice
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:66:13
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:64:13
|
||||
|
|
||||
LL | let a = vec[0];
|
||||
| ^^^^^^
|
||||
@@ -95,7 +89,7 @@ LL | let a = vec[0].clone();
|
||||
| ++++++++
|
||||
|
||||
error[E0508]: cannot move out of type `[Box<isize>]`, a non-copy slice
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:76:11
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:74:11
|
||||
|
|
||||
LL | match vec {
|
||||
| ^^^ cannot move out of here
|
||||
@@ -114,7 +108,7 @@ LL + [_a, _b, _c] => {}
|
||||
|
|
||||
|
||||
error[E0508]: cannot move out of type `[Box<isize>]`, a non-copy slice
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:87:13
|
||||
--> $DIR/borrowck-vec-pattern-nesting.rs:85:13
|
||||
|
|
||||
LL | let a = vec[0];
|
||||
| ^^^^^^
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | .find(|(&event_type, _)| event == event_type)
|
||||
| ^^----------^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `event_type` has type `EventType`, which does not implement the `Copy` trait
|
||||
| data moved here because `event_type` has type `EventType`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let opt = a.iter().enumerate().find(|(_, &s)| {
|
||||
| ^^^^^-^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
+1
-2
@@ -4,8 +4,7 @@ error[E0509]: cannot move out of type `X`, which implements the `Drop` trait
|
||||
LL | let X { x: y } = x;
|
||||
| - ^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `y` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `y` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
+1
-4
@@ -5,10 +5,7 @@ LL | match x {
|
||||
| ^ cannot move out of here
|
||||
LL |
|
||||
LL | X { x: y } => println!("contents: {}", y)
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `y` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `y` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let _ = HashMap::<String, i32>::new().iter().filter(|&(&_k, &_v)| { true });
|
||||
| ^^^--^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_k` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_k` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0509]: cannot move out of type `Thing`, which implements the `Drop` trait
|
||||
LL | Thing(*&mut String::new()) = Thing(String::new());
|
||||
| ------------------- ^^^^^^^^^^^^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because the place has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because the place has type `String`, which does not implement the `Copy` trait
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match x {
|
||||
| ^
|
||||
LL |
|
||||
LL | &Some(_y) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_y` has type `Box<i32>`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_y` has type `Box<i32>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
|
||||
LL | let [_, e, _, _] = *a;
|
||||
| - ^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `e` has type `D`, which does not implement the `Copy` trait
|
||||
| data moved here because `e` has type `D`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -19,8 +18,7 @@ error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
|
||||
LL | let [_, s @ .. , _] = *a;
|
||||
| - ^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `[D; 2]`, which does not implement the `Copy` trait
|
||||
| data moved here because `s` has type `[D; 2]`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -34,8 +32,7 @@ error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
|
||||
LL | let [_, e, _, _] = *a;
|
||||
| - ^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `e` has type `D`, which does not implement the `Copy` trait
|
||||
| data moved here because `e` has type `D`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -49,8 +46,7 @@ error[E0508]: cannot move out of type `[D; 4]`, a non-copy array
|
||||
LL | let [_, s @ .. , _] = *a;
|
||||
| - ^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `[D; 2]`, which does not implement the `Copy` trait
|
||||
| data moved here because `s` has type `[D; 2]`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
|
||||
@@ -4,10 +4,7 @@ error[E0508]: cannot move out of type `[A]`, a non-copy slice
|
||||
LL | match a {
|
||||
| ^ cannot move out of here
|
||||
LL | box [a] => {},
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `a` has type `A`, which does not implement the `Copy` trait
|
||||
| - data moved here because `a` has type `A`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match hellothere.x {
|
||||
| ^^^^^^^^^^^^
|
||||
LL | box E::Foo(_) => {}
|
||||
LL | box E::Bar(x) => println!("{}", x.to_string()),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
| - data moved here because `x` has type `Box<isize>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
|
||||
@@ -108,8 +108,7 @@ error[E0507]: cannot move out of `a` which is behind a shared reference
|
||||
LL | let A(s) = *a;
|
||||
| - ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -123,8 +122,7 @@ error[E0509]: cannot move out of type `D`, which implements the `Drop` trait
|
||||
LL | let C(D(s)) = c;
|
||||
| - ^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -170,10 +168,7 @@ LL | match x {
|
||||
| ^ cannot move out of here
|
||||
...
|
||||
LL | B::U(D(s)) => (),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -187,10 +182,7 @@ LL | match x {
|
||||
| ^ cannot move out of here
|
||||
...
|
||||
LL | (D(s), &t) => (),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -204,10 +196,7 @@ LL | match x {
|
||||
| ^
|
||||
...
|
||||
LL | (D(s), &t) => (),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `t` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `t` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -243,10 +232,7 @@ LL | match *x {
|
||||
| ^^
|
||||
LL |
|
||||
LL | Ok(s) | Err(s) => (),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match &s.x {
|
||||
| ^^^^
|
||||
LL | &E::Foo => {}
|
||||
LL | &E::Bar(identifier) => f(identifier.clone())
|
||||
| ----------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
| ---------- data moved here because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -22,8 +19,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let &E::Bar(identifier) = &s.x {
|
||||
| ---------- ^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -37,8 +33,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let &E::Bar(identifier) = &s.x else {
|
||||
| ---------- ^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `identifier` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match b {
|
||||
| ^ cannot move out of here
|
||||
LL |
|
||||
LL | deref!([x]) => x,
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
| - data moved here because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -22,10 +19,7 @@ LL | match rc {
|
||||
| ^^
|
||||
LL |
|
||||
LL | deref!(x) => x,
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
| - data moved here because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -39,10 +33,7 @@ LL | match b {
|
||||
| ^ cannot move out of here
|
||||
LL |
|
||||
LL | [x] => x,
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
| - data moved here because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -56,10 +47,7 @@ LL | match rc {
|
||||
| ^^
|
||||
LL |
|
||||
LL | Container(x) => x,
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
| - data moved here because `x` has type `Struct`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
+1
-2
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
LL | let (a, mut b) = &mut p;
|
||||
| ----- ^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||
| data moved here because `b` has type `U`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let (a, mut b) = &p;
|
||||
| ----- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||
| data moved here because `b` has type `U`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,10 +4,7 @@ error[E0507]: cannot move out of `arg.field` as enum variant `Some` which is beh
|
||||
LL | match arg.field {
|
||||
| ^^^^^^^^^
|
||||
LL | Some(s) => s.push('a'),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| - data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -31,10 +28,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | match &arg.field {
|
||||
| ^^^^^^^^^^
|
||||
LL | Some(mut s) => s.push('a'),
|
||||
| -----
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `s` has type `String`, which does not implement the `Copy` trait
|
||||
| ----- data moved here because `s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
+1
-2
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let Some(&Some(x)) = Some(&Some(&mut 0)) {
|
||||
| - ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
+4
-8
@@ -4,8 +4,7 @@ error[E0508]: cannot move out of type `[&mut i32; 1]`, a non-copy array
|
||||
LL | let [&x] = &[&mut 0];
|
||||
| - ^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -18,8 +17,7 @@ error[E0508]: cannot move out of type `[&mut i32; 1]`, a non-copy array
|
||||
LL | let [&x] = &mut [&mut 0];
|
||||
| - ^^^^^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
@@ -32,8 +30,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let Some(&Some(x)) = Some(&Some(&mut 0)) {
|
||||
| - ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -69,8 +66,7 @@ error[E0508]: cannot move out of type `[&mut i32; 1]`, a non-copy array
|
||||
LL | let [&mut x] = &mut [&mut 0];
|
||||
| - ^^^^^^^^^^^^^ cannot move out of here
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut i32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
+1
-2
@@ -36,8 +36,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let Some(&Some(x)) = Some(&Some(&mut 0)) {
|
||||
| - ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
+1
-2
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let Some(&Some(x)) = Some(&Some(&mut 0)) {
|
||||
| - ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
+1
-2
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let Some(&Some(x)) = Some(&Some(&mut 0)) {
|
||||
| - ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `&mut u32`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -91,8 +91,7 @@ error[E0507]: cannot move out of `foo_mut.pointer` which is behind a mutable ref
|
||||
LL | let &pin mut Foo(x) = foo_mut;
|
||||
| - ^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `T`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `T`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the pinned mutable borrow
|
||||
|
|
||||
@@ -106,8 +105,7 @@ error[E0507]: cannot move out of `foo_const.pointer` which is behind a shared re
|
||||
LL | let &pin const Foo(x) = foo_const;
|
||||
| - ^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `T`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `T`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the pinned borrow
|
||||
|
|
||||
@@ -138,8 +136,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
LL | ((&pin mut x,),): &'a pin mut (&'a mut (&'a pin mut Foo<T>,),),
|
||||
| ^^^^^^^^^^^-^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `x` has type `Foo<T>`, which does not implement the `Copy` trait
|
||||
| data moved here because `x` has type `Foo<T>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | for (n, mut m) in &tups {
|
||||
| ----- ^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `m` has type `Foo`, which does not implement the `Copy` trait
|
||||
| data moved here because `m` has type `Foo`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -9,8 +9,7 @@ LL | consume_fn(|| {
|
||||
LL | let X(_t) = x;
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -34,8 +33,7 @@ LL | consume_fn(|| {
|
||||
LL | if let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -59,8 +57,7 @@ LL | consume_fn(|| {
|
||||
LL | while let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -85,10 +82,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -113,10 +107,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -140,8 +131,7 @@ LL | consume_fn(|| {
|
||||
LL | let X(mut _t) = x;
|
||||
| ------ ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -165,8 +155,7 @@ LL | consume_fn(|| {
|
||||
LL | if let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -190,8 +179,7 @@ LL | consume_fn(|| {
|
||||
LL | while let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -216,10 +204,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t)
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -244,10 +229,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t) => (),
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:14:18
|
||||
@@ -270,8 +252,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | let X(_t) = x;
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -295,8 +276,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | if let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -320,8 +300,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | while let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -346,10 +325,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -374,10 +350,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -401,8 +374,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | let X(mut _t) = x;
|
||||
| ------ ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -426,8 +398,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | if let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -451,8 +422,7 @@ LL | <() as T>::consume_fn(|| {
|
||||
LL | while let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -477,10 +447,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t)
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -505,10 +472,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t) => (),
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:40:22
|
||||
@@ -531,8 +495,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | let X(_t) = x;
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -556,8 +519,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | if let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -581,8 +543,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | while let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -607,10 +568,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -635,10 +593,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -662,8 +617,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | let X(mut _t) = x;
|
||||
| ------ ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -687,8 +641,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | if let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -712,8 +665,7 @@ LL | ().method_consume_fn(|| {
|
||||
LL | while let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -738,10 +690,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t)
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -766,10 +715,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t) => (),
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:51:29
|
||||
@@ -792,8 +738,7 @@ LL | consume_fnmut(|| {
|
||||
LL | let X(_t) = x;
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -817,8 +762,7 @@ LL | consume_fnmut(|| {
|
||||
LL | if let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -842,8 +786,7 @@ LL | consume_fnmut(|| {
|
||||
LL | while let Either::One(_t) = e { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -868,10 +811,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -896,10 +836,7 @@ LL | match e {
|
||||
| ^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -923,8 +860,7 @@ LL | consume_fnmut(|| {
|
||||
LL | let X(mut _t) = x;
|
||||
| ------ ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -948,8 +884,7 @@ LL | consume_fnmut(|| {
|
||||
LL | if let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -973,8 +908,7 @@ LL | consume_fnmut(|| {
|
||||
LL | while let Either::One(mut _t) = em { }
|
||||
| ------ ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -999,10 +933,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t)
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -1027,10 +958,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t) => (),
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
@@ -1055,10 +983,7 @@ LL | match em {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(mut _t) => (),
|
||||
| ------
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| ------ data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: `Fn` and `FnMut` closures require captured values to be able to be consumed multiple times, but `FnOnce` closures may consume them only once
|
||||
--> $DIR/move-into-closure.rs:26:21
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of `s` which is behind a shared reference
|
||||
LL | let X(_t) = *s;
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -19,8 +18,7 @@ error[E0507]: cannot move out of `r` as enum variant `One` which is behind a sha
|
||||
LL | if let Either::One(_t) = *r { }
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -34,8 +32,7 @@ error[E0507]: cannot move out of `r` as enum variant `One` which is behind a sha
|
||||
LL | while let Either::One(_t) = *r { }
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -50,10 +47,7 @@ LL | match *r {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -68,10 +62,7 @@ LL | match *r {
|
||||
| ^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -85,8 +76,7 @@ error[E0507]: cannot move out of `sm` which is behind a mutable reference
|
||||
LL | let X(_t) = *sm;
|
||||
| -- ^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -100,8 +90,7 @@ error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mu
|
||||
LL | if let Either::One(_t) = *rm { }
|
||||
| -- ^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -115,8 +104,7 @@ error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mu
|
||||
LL | while let Either::One(_t) = *rm { }
|
||||
| -- ^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -131,10 +119,7 @@ LL | match *rm {
|
||||
| ^^^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -149,10 +134,7 @@ LL | match *rm {
|
||||
| ^^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -167,10 +149,7 @@ LL | match *rm {
|
||||
| ^^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the dereference here
|
||||
|
|
||||
@@ -184,8 +163,7 @@ error[E0507]: cannot move out of index of `Vec<X>`
|
||||
LL | let X(_t) = vs[0];
|
||||
| -- ^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -198,8 +176,7 @@ error[E0507]: cannot move out of index of `Vec<Either>`
|
||||
LL | if let Either::One(_t) = vr[0] { }
|
||||
| -- ^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -212,8 +189,7 @@ error[E0507]: cannot move out of index of `Vec<Either>`
|
||||
LL | while let Either::One(_t) = vr[0] { }
|
||||
| -- ^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -227,10 +203,7 @@ LL | match vr[0] {
|
||||
| ^^^^^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -244,10 +217,7 @@ LL | match vr[0] {
|
||||
| ^^^^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -260,8 +230,7 @@ error[E0507]: cannot move out of index of `Vec<X>`
|
||||
LL | let X(_t) = vsm[0];
|
||||
| -- ^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -274,8 +243,7 @@ error[E0507]: cannot move out of index of `Vec<Either>`
|
||||
LL | if let Either::One(_t) = vrm[0] { }
|
||||
| -- ^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -288,8 +256,7 @@ error[E0507]: cannot move out of index of `Vec<Either>`
|
||||
LL | while let Either::One(_t) = vrm[0] { }
|
||||
| -- ^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -303,10 +270,7 @@ LL | match vrm[0] {
|
||||
| ^^^^^^
|
||||
...
|
||||
LL | Either::One(_t)
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -320,10 +284,7 @@ LL | match vrm[0] {
|
||||
| ^^^^^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -337,10 +298,7 @@ LL | match vrm[0] {
|
||||
| ^^^^^^
|
||||
...
|
||||
LL | Either::One(_t) => (),
|
||||
| --
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing here
|
||||
|
|
||||
@@ -353,8 +311,7 @@ error[E0507]: cannot move out of `s` which is behind a shared reference
|
||||
LL | let &X(_t) = s;
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -368,8 +325,7 @@ error[E0507]: cannot move out of `r` as enum variant `One` which is behind a sha
|
||||
LL | if let &Either::One(_t) = r { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -383,8 +339,7 @@ error[E0507]: cannot move out of `r` as enum variant `One` which is behind a sha
|
||||
LL | while let &Either::One(_t) = r { }
|
||||
| -- ^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -399,10 +354,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -417,10 +369,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -435,10 +384,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -452,8 +398,7 @@ error[E0507]: cannot move out of `sm` which is behind a mutable reference
|
||||
LL | let &mut X(_t) = sm;
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -467,8 +412,7 @@ error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mu
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -482,8 +426,7 @@ error[E0507]: cannot move out of `rm` as enum variant `One` which is behind a mu
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -522,10 +465,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -540,10 +480,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -558,10 +495,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -575,8 +509,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let (&X(_t),) = (&x.clone(),);
|
||||
| -- ^^^^^^^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -590,8 +523,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -605,8 +537,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -621,10 +552,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -638,8 +566,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -653,8 +580,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -668,8 +594,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -707,8 +632,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | let &X(_t) = &x;
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -722,8 +646,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | if let &Either::One(_t) = &e { }
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -737,8 +660,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | while let &Either::One(_t) = &e { }
|
||||
| -- ^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -753,10 +675,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -771,10 +690,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -789,10 +705,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -806,8 +719,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
LL | let &mut X(_t) = &mut xm;
|
||||
| -- ^^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -821,8 +733,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -836,8 +747,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -852,10 +762,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -870,10 +777,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -888,10 +792,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -906,10 +807,7 @@ 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
|
||||
| -- data moved here because `_t` has type `X`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -923,8 +821,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | fn f1(&X(_t): &X) { }
|
||||
| ^^^--^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -938,8 +835,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -953,8 +849,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | fn f3((&X(_t),): (&X,)) { }
|
||||
| ^^^^--^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -968,8 +863,7 @@ error[E0507]: cannot move out of a mutable reference
|
||||
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
|
||||
| data moved here because `_t` has type `Y`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the mutable borrow
|
||||
|
|
||||
@@ -983,8 +877,7 @@ error[E0507]: cannot move out of `a.a` as enum variant `Some` which is behind a
|
||||
LL | let Some(_s) = a.a else {
|
||||
| -- ^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
| data moved here because `_s` has type `String`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider borrowing the pattern binding
|
||||
|
|
||||
|
||||
@@ -4,8 +4,7 @@ error[E0507]: cannot move out of `tuple.0` which is behind a shared reference
|
||||
LL | (b,) = *tuple;
|
||||
| - ^^^^^^
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because the place has type `NonCopy`, which does not implement the `Copy` trait
|
||||
| data moved here because the place has type `NonCopy`, which does not implement the `Copy` trait
|
||||
|
|
||||
note: if `NonCopy` implemented `Clone`, you could clone the value
|
||||
--> $DIR/non_copy_move_out_of_tuple.rs:3:1
|
||||
|
||||
@@ -5,10 +5,7 @@ LL | match (a, b) {
|
||||
| ^^^^^^
|
||||
LL |
|
||||
LL | (None, &c) => &c.unwrap(),
|
||||
| -
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `c` has type `Option<String>`, which does not implement the `Copy` trait
|
||||
| - data moved here because `c` has type `Option<String>`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -16,8 +16,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | with_positive(|&n| ());
|
||||
| ^-
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `n` has type `S`, which does not implement the `Copy` trait
|
||||
| data moved here because `n` has type `S`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -16,8 +16,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | with_positive(|&n| ());
|
||||
| ^-
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `n` has type `S`, which does not implement the `Copy` trait
|
||||
| data moved here because `n` has type `S`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
@@ -16,8 +16,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | with_positive(|&n| ());
|
||||
| ^-
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `n` has type `S`, which does not implement the `Copy` trait
|
||||
| data moved here because `n` has type `S`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
@@ -31,8 +30,7 @@ error[E0507]: cannot move out of a shared reference
|
||||
LL | with_positive(|&a| ());
|
||||
| ^-
|
||||
| |
|
||||
| data moved here
|
||||
| move occurs because `a` has type `S`, which does not implement the `Copy` trait
|
||||
| data moved here because `a` has type `S`, which does not implement the `Copy` trait
|
||||
|
|
||||
help: consider removing the borrow
|
||||
|
|
||||
|
||||
Reference in New Issue
Block a user