error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:40:17 | LL | let X(_t) = *s; | -- ^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `s` | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:40:11 | LL | let X(_t) = *s; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:44:30 | LL | if let Either::One(_t) = *r { } | -- ^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `r` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:44:24 | LL | if let Either::One(_t) = *r { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:48:33 | LL | while let Either::One(_t) = *r { } | -- ^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `r` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:48:27 | LL | while let Either::One(_t) = *r { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:52:11 | LL | match *r { | ^^ | | | cannot move out of borrowed content | help: consider removing the `*`: `r` ... LL | Either::One(_t) | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:56:21 | LL | Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:59:11 | LL | match *r { | ^^ | | | cannot move out of borrowed content | help: consider removing the `*`: `r` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:63:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:68:17 | LL | let X(_t) = *sm; | -- ^^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `sm` | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:68:11 | LL | let X(_t) = *sm; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:72:30 | LL | if let Either::One(_t) = *rm { } | -- ^^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `rm` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:72:24 | LL | if let Either::One(_t) = *rm { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:76:33 | LL | while let Either::One(_t) = *rm { } | -- ^^^ | | | | | cannot move out of borrowed content | | help: consider removing the `*`: `rm` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:76:27 | LL | while let Either::One(_t) = *rm { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:80:11 | LL | match *rm { | ^^^ | | | cannot move out of borrowed content | help: consider removing the `*`: `rm` ... LL | Either::One(_t) | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:84:21 | LL | Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:87:11 | LL | match *rm { | ^^^ | | | cannot move out of borrowed content | help: consider removing the `*`: `rm` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:91:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:95:11 | LL | match *rm { | ^^^ | | | cannot move out of borrowed content | help: consider removing the `*`: `rm` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:99:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:104:17 | LL | let X(_t) = vs[0]; | -- ^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vs[0]` | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:104:11 | LL | let X(_t) = vs[0]; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:108:30 | LL | if let Either::One(_t) = vr[0] { } | -- ^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vr[0]` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:108:24 | LL | if let Either::One(_t) = vr[0] { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:112:33 | LL | while let Either::One(_t) = vr[0] { } | -- ^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vr[0]` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:112:27 | LL | while let Either::One(_t) = vr[0] { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:116:11 | LL | match vr[0] { | ^^^^^ | | | cannot move out of borrowed content | help: consider borrowing here: `&vr[0]` ... LL | Either::One(_t) | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:120:21 | LL | Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:123:11 | LL | match vr[0] { | ^^^^^ | | | cannot move out of borrowed content | help: consider borrowing here: `&vr[0]` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:127:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:132:17 | LL | let X(_t) = vsm[0]; | -- ^^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vsm[0]` | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:132:11 | LL | let X(_t) = vsm[0]; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:136:30 | LL | if let Either::One(_t) = vrm[0] { } | -- ^^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vrm[0]` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:136:24 | LL | if let Either::One(_t) = vrm[0] { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:140:33 | LL | while let Either::One(_t) = vrm[0] { } | -- ^^^^^^ | | | | | cannot move out of borrowed content | | help: consider borrowing here: `&vrm[0]` | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:140:27 | LL | while let Either::One(_t) = vrm[0] { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:144:11 | LL | match vrm[0] { | ^^^^^^ | | | cannot move out of borrowed content | help: consider borrowing here: `&vrm[0]` ... LL | Either::One(_t) | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:148:21 | LL | Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:151:11 | LL | match vrm[0] { | ^^^^^^ | | | cannot move out of borrowed content | help: consider borrowing here: `&vrm[0]` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:155:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:159:11 | LL | match vrm[0] { | ^^^^^^ | | | cannot move out of borrowed content | help: consider borrowing here: `&vrm[0]` ... LL | Either::One(_t) => (), | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:163:21 | LL | Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:170:18 | LL | let &X(_t) = s; | ------ ^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:170:12 | LL | let &X(_t) = s; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:174:31 | LL | if let &Either::One(_t) = r { } | ---------------- ^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:174:25 | LL | if let &Either::One(_t) = r { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:178:34 | LL | while let &Either::One(_t) = r { } | ---------------- ^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:178:28 | LL | while let &Either::One(_t) = r { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:182:11 | LL | match r { | ^ cannot move out of borrowed content LL | LL | &Either::One(_t) | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:184:22 | LL | &Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:190:11 | LL | match r { | ^ cannot move out of borrowed content LL | LL | &Either::One(_t) => (), | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:192:22 | LL | &Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:197:11 | LL | match r { | ^ cannot move out of borrowed content LL | LL | &Either::One(_t) => (), | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:199:22 | LL | &Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:209:22 | LL | let &mut X(_t) = sm; | ---------- ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:209:16 | LL | let &mut X(_t) = sm; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:213:35 | LL | if let &mut Either::One(_t) = rm { } | -------------------- ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:213:29 | LL | if let &mut Either::One(_t) = rm { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:217:38 | LL | while let &mut Either::One(_t) = rm { } | -------------------- ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:217:32 | LL | while let &mut Either::One(_t) = rm { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:221:11 | LL | match rm { | ^^ cannot move out of borrowed content 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 --> $DIR/simple.rs:223:26 | LL | &mut Either::One(_t) => (), | ^^ ... LL | &mut Either::Two(_t) => (), | ^^ help: consider removing the `&mut` | LL | Either::One(_t) => (), | ^^^^^^^^^^^^^^^ help: consider removing the `&mut` | LL | Either::Two(_t) => (), | ^^^^^^^^^^^^^^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:230:11 | LL | match rm { | ^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:232:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:237:11 | LL | match rm { | ^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:239:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:244:11 | LL | match rm { | ^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:246:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:260:21 | LL | let (&X(_t),) = (&x.clone(),); | -- ^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:260:13 | LL | let (&X(_t),) = (&x.clone(),); | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:262:34 | LL | if let (&Either::One(_t),) = (&e.clone(),) { } | -- ^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:262:26 | LL | if let (&Either::One(_t),) = (&e.clone(),) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:264:37 | LL | while let (&Either::One(_t),) = (&e.clone(),) { } | -- ^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:264:29 | LL | while let (&Either::One(_t),) = (&e.clone(),) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:266:11 | LL | match (&e.clone(),) { | ^^^^^^^^^^^^^ cannot move out of borrowed content LL | LL | (&Either::One(_t),) | -- data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:268:23 | LL | (&Either::One(_t),) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:274:25 | LL | let (&mut X(_t),) = (&mut xm.clone(),); | -- ^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:274:17 | LL | let (&mut X(_t),) = (&mut xm.clone(),); | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:276:38 | LL | if let (&mut Either::One(_t),) = (&mut em.clone(),) { } | -- ^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:276:30 | LL | if let (&mut Either::One(_t),) = (&mut em.clone(),) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:278:41 | LL | while let (&mut Either::One(_t),) = (&mut em.clone(),) { } | -- ^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content | | | data moved here | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:278:33 | LL | while let (&mut Either::One(_t),) = (&mut em.clone(),) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:280:11 | LL | match (&mut em.clone(),) { | ^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content 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 --> $DIR/simple.rs:282:27 | LL | (&mut Either::One(_t),) => (), | ^^ LL | (&mut Either::Two(_t),) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:290:18 | LL | let &X(_t) = &x; | ------ ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:290:12 | LL | let &X(_t) = &x; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:294:31 | LL | if let &Either::One(_t) = &e { } | ---------------- ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:294:25 | LL | if let &Either::One(_t) = &e { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:298:34 | LL | while let &Either::One(_t) = &e { } | ---------------- ^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:298:28 | LL | while let &Either::One(_t) = &e { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:302:11 | LL | match &e { | ^^ cannot move out of borrowed content LL | LL | &Either::One(_t) | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:304:22 | LL | &Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:310:11 | LL | match &e { | ^^ cannot move out of borrowed content LL | LL | &Either::One(_t) => (), | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:312:22 | LL | &Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:317:11 | LL | match &e { | ^^ cannot move out of borrowed content LL | LL | &Either::One(_t) => (), | ---------------- | | | | | data moved here | help: consider removing the `&`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:319:22 | LL | &Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:325:22 | LL | let &mut X(_t) = &mut xm; | ---------- ^^^^^^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:325:16 | LL | let &mut X(_t) = &mut xm; | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:329:35 | LL | if let &mut Either::One(_t) = &mut em { } | -------------------- ^^^^^^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:329:29 | LL | if let &mut Either::One(_t) = &mut em { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:333:38 | LL | while let &mut Either::One(_t) = &mut em { } | -------------------- ^^^^^^^ cannot move out of borrowed content | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:333:32 | LL | while let &mut Either::One(_t) = &mut em { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:337:11 | LL | match &mut em { | ^^^^^^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:339:26 | LL | &mut Either::One(_t) | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:345:11 | LL | match &mut em { | ^^^^^^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:347:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:352:11 | LL | match &mut em { | ^^^^^^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:354:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:359:11 | LL | match &mut em { | ^^^^^^^ cannot move out of borrowed content LL | LL | &mut Either::One(_t) => (), | -------------------- | | | | | data moved here | help: consider removing the `&mut`: `Either::One(_t)` | note: move occurs because `_t` has type `X`, which does not implement the `Copy` trait --> $DIR/simple.rs:361:26 | LL | &mut Either::One(_t) => (), | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:204:11 | LL | fn f1(&X(_t): &X) { } | ^^^--^ | | | | | data moved here | cannot move out of borrowed content | help: consider removing the `&`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:204:14 | LL | fn f1(&X(_t): &X) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:251:11 | LL | fn f2(&mut X(_t): &mut X) { } | ^^^^^^^--^ | | | | | data moved here | cannot move out of borrowed content | help: consider removing the `&mut`: `X(_t)` | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:251:18 | LL | fn f2(&mut X(_t): &mut X) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:271:11 | LL | fn f3((&X(_t),): (&X,)) { } | ^^^^--^^^ | | | | | data moved here | cannot move out of borrowed content | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:271:15 | LL | fn f3((&X(_t),): (&X,)) { } | ^^ error[E0507]: cannot move out of borrowed content --> $DIR/simple.rs:285:11 | LL | fn f4((&mut X(_t),): (&mut X,)) { } | ^^^^^^^^--^^^ | | | | | data moved here | cannot move out of borrowed content | note: move occurs because `_t` has type `Y`, which does not implement the `Copy` trait --> $DIR/simple.rs:285:19 | LL | fn f4((&mut X(_t),): (&mut X,)) { } | ^^ error: aborting due to 60 previous errors For more information about this error, try `rustc --explain E0507`.