Send — can move to another thread. Sync — can share between threads.
Send:
Sync:
&T is Sync if T is Sync.1fn require_send<T: Send>(val: T) {2 thread::spawn(move || {3 println!("{:?}", val);4 });5}67fn require_sync<T: Sync>(val: &T) {8 let handle = thread::spawn(move || {9 println!("{:?}", val);10 });11}
Key: Send for moving, Sync for sharing.