mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-28 02:37:16 +00:00
```
error[E0382]: borrow of moved value: `x`
--> $DIR/moves-based-on-type-capture-clause-bad.rs:9:20
|
LL | let x = "Hello world!".to_string();
| - move occurs because `x` has type `String`, which does not implement the `Copy` trait
LL | thread::spawn(move || {
| ------- value moved into closure here
LL | println!("{}", x);
| - variable moved due to use in closure
LL | });
LL | println!("{}", x);
| ^ value borrowed here after move
|
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider cloning the value before moving it into the closure
|
LL ~ let value = x.clone();
LL ~ thread::spawn(move || {
LL ~ println!("{}", value);
|
```
26 lines
903 B
Plaintext
26 lines
903 B
Plaintext
error[E0382]: borrow of moved value: `arc_v`
|
|
--> $DIR/no-capture-arc.rs:12:18
|
|
|
|
|
LL | let arc_v = Arc::new(v);
|
|
| ----- move occurs because `arc_v` has type `Arc<Vec<i32>>`, which does not implement the `Copy` trait
|
|
LL |
|
|
LL | thread::spawn(move|| {
|
|
| ------ value moved into closure here
|
|
LL | assert_eq!((*arc_v)[3], 4);
|
|
| ----- variable moved due to use in closure
|
|
...
|
|
LL | assert_eq!((*arc_v)[2], 3);
|
|
| ^^^^^ value borrowed here after move
|
|
|
|
|
= note: borrow occurs due to deref coercion to `Vec<i32>`
|
|
help: consider cloning the value before moving it into the closure
|
|
|
|
|
LL ~ let value = arc_v.clone();
|
|
LL ~ thread::spawn(move|| {
|
|
LL ~ assert_eq!((*value)[3], 4);
|
|
|
|
|
|
|
error: aborting due to 1 previous error
|
|
|
|
For more information about this error, try `rustc --explain E0382`.
|