🦀 Rust Intermediate

How do you use thread::spawn in Rust?

Why Interviewers Ask This

This tests whether you can apply Rust knowledge to real-world scenarios. Interviewers are looking for clarity of thought and evidence that you've encountered this in production code.

Answer

std::thread::spawn creates a new OS thread. It takes a closure and runs it in the new thread: let handle = thread::spawn(|| { println!("from thread"); });. The closure must be 'static (contain no non-static references) and implement Send (safe to send across threads). Use the move keyword to transfer ownership of variables into the closure: thread::spawn(move || { use_my_data(data); }). The function returns a JoinHandle<T> where T is the closure's return type. Call handle.join() (returns Result) to wait for the thread to finish and get its return value. If threads need to share data, use Arc<Mutex<T>> — never raw shared mutable state.

Pro Tip

This topic has Rust-specific nuances that differ from general programming. Highlighting those nuances in your answer shows expertise rather than generic knowledge.