error[E0505]: cannot move out of `x1` because it is borrowed --> $DIR/borrowck-multiple-captures.rs:12:19 | LL | let x1: Box<_> = Box::new(1); | -- binding `x1` declared here LL | let p1 = &x1; | --- borrow of `x1` occurs here ... LL | thread::spawn(move|| { | ^^^^^^ move out of `x1` occurs here ... LL | drop(x1); | -- move occurs due to use in closure ... LL | borrow(&*p1); | ---- borrow later used here error[E0505]: cannot move out of `x2` because it is borrowed --> $DIR/borrowck-multiple-captures.rs:12:19 | LL | let x2: Box<_> = Box::new(2); | -- binding `x2` declared here LL | let p2 = &x2; | --- borrow of `x2` occurs here LL | thread::spawn(move|| { | ^^^^^^ move out of `x2` occurs here ... LL | drop(x2); | -- move occurs due to use in closure ... LL | borrow(&*p2); | ---- borrow later used here error[E0382]: use of moved value: `x1` --> $DIR/borrowck-multiple-captures.rs:27:19 | LL | let x1: Box<_> = Box::new(1); | -- move occurs because `x1` has type `Box<i32>`, which does not implement the `Copy` trait LL | drop(x1); | -- value moved here ... LL | thread::spawn(move|| { | ^^^^^^ value used here after move ... LL | drop(x1); | -- use occurs due to use in closure | help: consider cloning the value if the performance cost is acceptable | LL | drop(x1.clone()); | ++++++++ error[E0382]: use of moved value: `x2` --> $DIR/borrowck-multiple-captures.rs:27:19 | LL | let x2: Box<_> = Box::new(2); | -- move occurs because `x2` has type `Box<i32>`, which does not implement the `Copy` trait LL | drop(x2); | -- value moved here LL | thread::spawn(move|| { | ^^^^^^ value used here after move ... LL | drop(x2); | -- use occurs due to use in closure | help: consider cloning the value if the performance cost is acceptable | LL | drop(x2.clone()); | ++++++++ error[E0382]: use of moved value: `x` --> $DIR/borrowck-multiple-captures.rs:41:14 | LL | drop(x); | - value moved here LL | drop(x); | ^ value used here after move | = note: move occurs because `x` has type `Box<i32>`, which does not implement the `Copy` trait error[E0505]: cannot move out of `x` because it is borrowed --> $DIR/borrowck-multiple-captures.rs:38:19 | LL | let x: Box<_> = Box::new(1); | - binding `x` declared here LL | let p = &x; | -- borrow of `x` occurs here LL | thread::spawn(move|| { | ^^^^^^ move out of `x` occurs here LL | LL | drop(x); | - move occurs due to use in closure ... LL | borrow(&*p); | --- borrow later used here error[E0382]: use of moved value: `x` --> $DIR/borrowck-multiple-captures.rs:52:14 | LL | drop(x); | - value moved here LL | drop(x); | ^ value used here after move | = note: move occurs because `x` has type `Box<i32>`, which does not implement the `Copy` trait error[E0382]: use of moved value: `x` --> $DIR/borrowck-multiple-captures.rs:49:19 | LL | let x: Box<_> = Box::new(1); | - move occurs because `x` has type `Box<i32>`, which does not implement the `Copy` trait LL | drop(x); | - value moved here LL | thread::spawn(move|| { | ^^^^^^ value used here after move LL | LL | drop(x); | - use occurs due to use in closure | help: consider cloning the value if the performance cost is acceptable | LL | drop(x.clone()); | ++++++++ error: aborting due to 8 previous errors Some errors have detailed explanations: E0382, E0505. For more information about an error, try `rustc --explain E0382`.