error[E0382]: use of moved value: `x` --> $DIR/spawn-thread.rs:15:42 | LL | let x = (Arc::new("foo".to_owned()), Arc::new(vec![1, 2, 3]), Arc::new(1)); | - move occurs because `x` has type `(Arc, Arc>, Arc)`, which does not implement the `Copy` trait LL | for _ in 0..10 { | -------------- inside of this loop LL | let handler = std::thread::spawn(use || { | __________________________________________-^^^^^ LL | | LL | | drop((x.0, x.1, x.2)); | | --- use occurs due to use in closure LL | | }); | |_________- value moved here, in previous iteration of loop | help: consider moving the expression out of the loop so it is only moved once | LL ~ let mut value = std::thread::spawn(use || { LL + LL + drop((x.0, x.1, x.2)); LL + }); LL ~ for _ in 0..10 { LL ~ let handler = value; | error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0382`.