pub struct SyncUnsafeCell<T>
where T: ?Sized,
{ /* private fields */ }
🔬This is a nightly-only experimental API. (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>

source

pub const fn new(value: T) -> SyncUnsafeCell<T>

🔬This is a nightly-only experimental API. (sync_unsafe_cell)
Available on crate feature mem only.

Constructs a new instance of SyncUnsafeCell which will wrap the specified value.

source

pub const fn into_inner(self) -> T

🔬This is a nightly-only experimental API. (sync_unsafe_cell)
Available on crate feature mem only.

Unwraps the value, consuming the cell.

source§

impl<T> SyncUnsafeCell<T>
where T: ?Sized,

source

pub const fn get(&self) -> *mut T

🔬This is a nightly-only experimental API. (sync_unsafe_cell)
Available on crate feature mem only.

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

source

pub const fn get_mut(&mut self) -> &mut T

🔬This is a nightly-only experimental API. (sync_unsafe_cell)
Available on crate feature mem only.

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.

source

pub const fn raw_get(this: *const SyncUnsafeCell<T>) -> *mut T

🔬This is a nightly-only experimental API. (sync_unsafe_cell)
Available on crate feature mem only.

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,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<T> Default for SyncUnsafeCell<T>
where T: Default,

source§

fn default() -> SyncUnsafeCell<T>

Creates an SyncUnsafeCell, with the Default value for T.

source§

impl<T> From<T> for SyncUnsafeCell<T>

source§

fn from(t: T) -> SyncUnsafeCell<T>

Creates a new SyncUnsafeCell<T> containing the given value.

source§

impl<T, U> CoerceUnsized<SyncUnsafeCell<U>> for SyncUnsafeCell<T>
where T: CoerceUnsized<U>,

source§

impl<T, U> DispatchFromDyn<SyncUnsafeCell<U>> for SyncUnsafeCell<T>
where T: DispatchFromDyn<U>,

source§

impl<T> Sync for SyncUnsafeCell<T>
where T: Sync + ?Sized,

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for SyncUnsafeCell<T>

§

impl<T: ?Sized> Send for SyncUnsafeCell<T>
where T: Send,

§

impl<T: ?Sized> Unpin for SyncUnsafeCell<T>
where T: Unpin,

§

impl<T: ?Sized> UnwindSafe for SyncUnsafeCell<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Also for T

source§

fn also_mut<F: FnOnce(&mut Self)>(self, f: F) -> Self

Available on crate feature result only.
Applies a function which takes the parameter by exclusive reference, and then returns the (possibly) modified owned value. Read more
source§

fn also_ref<F: FnOnce(&Self)>(self, f: F) -> Self

Available on crate feature result only.
Applies a function which takes the parameter by shared reference, and then returns the (possibly) modified owned value. Read more
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AnyExt for T
where T: Any,

source§

fn type_of(&self) -> TypeId

Available on crate feature any only.
Returns the TypeId of self. Read more
source§

fn type_name(&self) -> &'static str

Available on crate feature any only.
Returns the type name of self. Read more
source§

fn type_is<T: 'static>(&self) -> bool

Available on crate feature any only.
Returns true if Self is of type T. Read more
source§

fn as_any_ref(&self) -> &dyn Any
where Self: Sized,

Available on crate feature any only.
Upcasts &self as &dyn Any. Read more
source§

fn as_any_mut(&mut self) -> &mut dyn Any
where Self: Sized,

Available on crate feature any only.
Upcasts &mut self as &mut dyn Any. Read more
source§

fn as_any_box(self: Box<Self>) -> Box<dyn Any>
where Self: Sized,

Available on crate feature any only.
Upcasts Box<self> as Box<dyn Any>. Read more
source§

impl<T, Res> Apply<Res> for T
where T: ?Sized,

source§

fn apply<F: FnOnce(Self) -> Res>(self, f: F) -> Res
where Self: Sized,

Available on crate feature result only.
Apply a function which takes the parameter by value.
source§

fn apply_ref<F: FnOnce(&Self) -> Res>(&self, f: F) -> Res

Available on crate feature result only.
Apply a function which takes the parameter by shared reference.
source§

fn apply_mut<F: FnOnce(&mut Self) -> Res>(&mut self, f: F) -> Res

Available on crate feature result only.
Apply a function which takes the parameter by exclusive reference.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<!> for T

source§

fn from(t: !) -> T

Converts to this type from the input type.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Mem for T
where T: ?Sized,

source§

const NEEDS_DROP: bool = _

Available on crate feature mem only.
Whether dropping values of this type matters.
source§

fn mem_needs_drop(&self) -> bool

Available on crate feature mem only.
Returns true if dropping values of this type matters.
source§

fn mem_drop(self)
where Self: Sized,

Available on crate feature mem only.
Drops self by running its destructor.
source§

fn mem_forget(self)
where Self: Sized,

Available on crate feature mem only.
Forgets about self without running its destructor.
source§

fn mem_replace(&mut self, other: Self) -> Self
where Self: Sized,

Available on crate feature mem only.
Replaces self with other, returning the previous value of self.
source§

fn mem_take(&mut self) -> Self
where Self: Default,

Available on crate feature mem only.
Replaces self with its default value, returning the previous value of self.
source§

fn mem_swap(&mut self, other: &mut Self)
where Self: Sized,

Available on crate feature mem only.
Swaps the value of self and other without deinitializing either one.
source§

fn mem_as_bytes(&self) -> &[u8]
where Self: Sync + Unpin,

Available on crate features mem and unsafe_mem only.
View a Sync + Unpin self as &[u8]. Read more
source§

fn mem_as_bytes_mut(&mut self) -> &mut [u8]
where Self: Sync + Unpin,

Available on crate features mem and unsafe_mem only.
View a Sync + Unpin self as &mut [u8].
source§

impl<T> Size for T

source§

const BYTE_ALIGN: usize = _

Available on crate feature mem only.
The alignment of this type in bytes.
source§

const BYTE_SIZE: usize = _

Available on crate feature mem only.
The size of this type in bytes.
source§

const PTR_SIZE: usize = 8usize

Available on crate feature mem only.
The size of a pointer in bytes, for the current platform.
source§

fn byte_align(&self) -> usize

Available on crate feature mem only.
Returns the alignment of this type in bytes.
source§

fn byte_size(&self) -> usize

Available on crate feature mem only.
Returns the size of this type in bytes. Read more
source§

fn ptr_ratio(&self) -> (usize, usize)

Available on crate feature mem only.
Returns the size ratio between PTR_SIZE and BYTE_SIZE. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.