Consider a value a: T
.
Assume T: Sync
. Then, to access a
on multiple threads, it must be possible to send a reference to another thread, thus &T: Send
. Therefore, T: Sync ⟹ &T: Send
.
Assume &T: Send
. Sending &a: &T
to another thread means a
can be accessed concurrently, thus T: Sync
is required. Therefore, &T: Send ⟹ T: Sync
.