pub struct Unshared<T> { /* private fields */ }
Expand description
Wraps a type and only allows unique borrowing.
The main use case is to wrap a !Sync
type and implement Sync
for it as this type blocks
having multiple shared references to the inner value.
§Safety
We must be careful when accessing inner
, there must be no way to create a shared reference to
it from a shared reference to an Unshared
, as that would allow creating shared references on
multiple threads.
As an example deriving or implementing Clone
is impossible, two threads could attempt to
clone a shared Unshared<T>
reference which would result in accessing the same inner value
concurrently.
Implementations§
Trait Implementations§
Auto Trait Implementations§
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more