pub struct SyncUnsafeCell<T>where
T: ?Sized,{ /* private fields */ }sync_unsafe_cell)Expand description
UnsafeCell, but Sync.
This is just an UnsafeCell, except it implements Sync
if T implements Sync.
UnsafeCell doesnโt implement Sync, to prevent accidental mis-use.
You can use SyncUnsafeCell instead of UnsafeCell to allow it to be
shared between threads, if thatโs intentional.
Providing proper synchronization is still the task of the user,
making this type just as unsafe to use.
See UnsafeCell for details.
Implementationsยง
Sourceยงimpl<T> SyncUnsafeCell<T>
impl<T> SyncUnsafeCell<T>
Sourcepub const fn new(value: T) -> SyncUnsafeCell<T>
๐ฌThis is a nightly-only experimental API. (sync_unsafe_cell)
pub const fn new(value: T) -> SyncUnsafeCell<T>
sync_unsafe_cell)Constructs a new instance of SyncUnsafeCell which will wrap the specified value.
Sourcepub const fn into_inner(self) -> T
๐ฌThis is a nightly-only experimental API. (sync_unsafe_cell)
pub const fn into_inner(self) -> T
sync_unsafe_cell)Unwraps the value, consuming the cell.
Sourceยงimpl<T> SyncUnsafeCell<T>where
T: ?Sized,
impl<T> SyncUnsafeCell<T>where
T: ?Sized,
Sourcepub const fn get(&self) -> *mut T
๐ฌThis is a nightly-only experimental API. (sync_unsafe_cell)
pub const fn get(&self) -> *mut T
sync_unsafe_cell)Gets a mutable pointer to the wrapped value.
This can be cast to a pointer of any kind.
Ensure that the access is unique (no active references, mutable or not)
when casting to &mut T, and ensure that there are no mutations
or mutable aliases going on when casting to &T
Sourcepub const fn get_mut(&mut self) -> &mut T
๐ฌThis is a nightly-only experimental API. (sync_unsafe_cell)
pub const fn get_mut(&mut self) -> &mut T
sync_unsafe_cell)Returns a mutable reference to the underlying data.
This call borrows the SyncUnsafeCell mutably (at compile-time) which
guarantees that we possess the only reference.
Sourcepub const fn raw_get(this: *const SyncUnsafeCell<T>) -> *mut T
๐ฌThis is a nightly-only experimental API. (sync_unsafe_cell)
pub const fn raw_get(this: *const SyncUnsafeCell<T>) -> *mut T
sync_unsafe_cell)Gets a mutable pointer to the wrapped value.
See UnsafeCell::get for details.
Trait Implementationsยง
Sourceยงimpl<T> Debug for SyncUnsafeCell<T>where
T: ?Sized,
impl<T> Debug for SyncUnsafeCell<T>where
T: ?Sized,
Sourceยงimpl<T> Default for SyncUnsafeCell<T>where
T: Default,
impl<T> Default for SyncUnsafeCell<T>where
T: Default,
Sourceยงfn default() -> SyncUnsafeCell<T>
fn default() -> SyncUnsafeCell<T>
Creates an SyncUnsafeCell, with the Default value for T.
Sourceยงimpl<T> From<T> for SyncUnsafeCell<T>
impl<T> From<T> for SyncUnsafeCell<T>
Sourceยงfn from(t: T) -> SyncUnsafeCell<T>
fn from(t: T) -> SyncUnsafeCell<T>
Creates a new SyncUnsafeCell<T> containing the given value.
impl<T, U> CoerceUnsized<SyncUnsafeCell<U>> for SyncUnsafeCell<T>where
T: CoerceUnsized<U>,
impl<T, U> DispatchFromDyn<SyncUnsafeCell<U>> for SyncUnsafeCell<T>where
T: DispatchFromDyn<U>,
impl<T> Sync for SyncUnsafeCell<T>
Auto Trait Implementationsยง
impl<T> !Freeze for SyncUnsafeCell<T>
impl<T> !RefUnwindSafe for SyncUnsafeCell<T>
impl<T> Send for SyncUnsafeCell<T>
impl<T> Unpin for SyncUnsafeCell<T>
impl<T> UnsafeUnpin for SyncUnsafeCell<T>where
T: UnsafeUnpin + ?Sized,
impl<T> UnwindSafe for SyncUnsafeCell<T>where
T: UnwindSafe + ?Sized,
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
Sourceยงimpl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Sourceยงfn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Sourceยงfn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Sourceยงfn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Anyโs vtable from &Traitโs.Sourceยงfn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Anyโs vtable from &mut Traitโs.Sourceยงimpl<T> DowncastSync for T
impl<T> DowncastSync for T
Sourceยงimpl<A> DynCastExt for A
impl<A> DynCastExt for A
Sourceยงfn dyn_cast<T>(
self,
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source>where
A: DynCastExtHelper<T>,
T: ?Sized,
fn dyn_cast<T>(
self,
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source>where
A: DynCastExtHelper<T>,
T: ?Sized,
Sourceยงfn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target
fn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target
Sourceยงfn dyn_cast_adv<F, T>(
self,
) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source>
fn dyn_cast_adv<F, T>( self, ) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source>
Sourceยงfn dyn_cast_with_config<C>(
self,
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source>where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>,
fn dyn_cast_with_config<C>(
self,
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source>where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>,
Sourceยงimpl<T> Instrument for T
impl<T> Instrument for T
Sourceยงfn instrument(self, span: Span) -> Instrumented<Self> โ
fn instrument(self, span: Span) -> Instrumented<Self> โ
Sourceยงfn in_current_span(self) -> Instrumented<Self> โ
fn in_current_span(self) -> Instrumented<Self> โ
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self> โ
fn into_either(self, into_left: bool) -> Either<Self, Self> โ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more