We saw with the Send and Sync traits that the first one allows for a variable to be sent between threads, but how does that work? Can we just use a variable created in the main thread inside our secondary thread? Let's try it:
use std::thread;fn main() { let my_vec = vec![10, 33, 54]; let handle = thread::Builder::new() .name("my thread".to_owned()) .spawn(|| { println!("This is my vector: {:?}", my_vec); }) .expect("could not create the thread"); if handle.join().is_err() { println!("Something bad happened :("); }}
What we did was create a vector outside the thread and then use it from inside. But it seems it does not work. Let's see what the compiler tells us:
That's interesting. The compiler noticed that the ...