ButtplugFutureStateShared<T>
implements Send
& Sync
regardless of T
.
If T: !Send
for ButtplugFutureStateShared<T>
, it is possible to move non-Send types across thread boundaries (e.g. T
=Rc<T>
) and lead to undefined behavior.
If T: !Sync
for ButtplugFutureStateShared<T>
, it is possible to cause data race to T
(e.g. T
=Arc<Cell<_>>
) and lead to undefined behavior.
The flaw was corrected in version 1.0.4 by removing manual implementations of Send
/Sync
for ButtplugFutureStateShared<T>
to let rustc generate auto trait implementations with correct trait bounds on T
.
{ "license": "CC0-1.0" }