Two marker traits carry the whole of Rust's thread safety. Neither has any methods — they are claims the compiler checks and then enforces.
Send — the value can be moved to another thread.
Sync — the value can be shared by reference across threads. Formally: T is Sync if and only if &T is Send.
They are auto traits: a type gets them automatically when all its fields have them. You almost never implement them by hand, and doing so requires unsafe because you are making a promise the compiler cannot verify.
