mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +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); | ```
16 lines
307 B
Rust
16 lines
307 B
Rust
use std::sync::Arc;
|
|
use std::thread;
|
|
|
|
fn main() {
|
|
let v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
let arc_v = Arc::new(v);
|
|
|
|
thread::spawn(move|| {
|
|
assert_eq!((*arc_v)[3], 4);
|
|
});
|
|
|
|
assert_eq!((*arc_v)[2], 3); //~ ERROR borrow of moved value: `arc_v`
|
|
|
|
println!("{:?}", *arc_v);
|
|
}
|