Affected versions of this crate unconditionally implement Sync
for SyncRef<T>
.
This definition allows data races if &T
is accessible through &SyncRef
.
SyncRef<T>
derives Clone
and Debug
, and the default implementations of those traits access &T
by invoking T::clone()
& T::fmt()
. It is possible to create data races & undefined behavior by concurrently invoking SyncRef<T>::clone()
or SyncRef<T>::fmt()
from multiple threads with T: !Sync
.
{ "license": "CC0-1.0" }