Send — can be transferred between threads. Sync — can be shared between threads.
Send:
Sync:
1// Send2let data = vec![1, 2, 3];3std::thread::spawn(move || {4 println!("{:?}", data);5});67// Sync8use std::sync::Arc;9let data = Arc::new(vec![1, 2, 3]);10let data2 = Arc::clone(&data);11std::thread::spawn(move || println!("{:?}", data2));12std::thread::spawn(move || println!("{:?}", data));
Key: Send for moving, Sync for sharing.