Struct async_compression::unshared::Unshared
source · pub struct Unshared<T> {
inner: T,
}
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.
Fields§
§inner: T
Implementations§
Trait Implementations§
Safety: See comments on main docs for Unshared
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