Send means a type can be transferred across thread boundaries. Sync means a type can be shared between threads (&T is Send). Most types are Send + Sync; exceptions include Rc (not Send) and RefCell (not Sync). The compiler uses these marker traits to prevent data races at compile time. You rarely implement them manually; they're auto-derived when all fields are Send/Sync. For unsafe code that maintains invariants manually, you can implement them explicitly. Understanding Send and Sync is key to Rust's fearless concurrency: the type system prevents accidental data sharing. This is what makes Arc<Mutex<T>> safe: Arc is Send + Sync, Mutex ensures exclusive access.