The Send trait is automatically applied to any data type that can safely be moved between threads. It is a close relative of Sync, and like Sync, we can implement !Send to tell the compiler that a data type should not have the trait.
If we don't explicitly forbid it, the compiler decides whether a type has the Send trait based on whether the types it contains have the trait.