Function opendal::io_util::unshared_reader
source · [−]pub fn unshared_reader<R: BytesRead>(r: R) -> UnsharedReader<R>
Expand description
Wraps a type and only allows unique borrowing, the main usecase 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.