Affected versions of this crate unconditionally implement Send/Sync for
SyncChannel<T> doesn’t provide access to
&T but merely serves as a channel that consumes and returns owned
Users can create UB in safe Rust by sending
T: !Send to other threads with
SyncChannel::send/recv APIs. Using
T = Arc<Cell<_> allows to create data races (which can lead to memory corruption), and using
T = MutexGuard<T> allows to unlock a mutex from a thread that didn’t lock the mutex.