Struct SyncUnsafeCell

Source
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)

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)

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)

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)

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)

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> PinCoerceUnsized for SyncUnsafeCell<T>
where T: ?Sized,

Source§

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

Auto Trait Implementations§

§

impl<T> !Freeze for SyncUnsafeCell<T>

§

impl<T> !RefUnwindSafe for SyncUnsafeCell<T>

§

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

§

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

§

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

Blanket Implementations§

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<S> AssignWithType for S

Source§

fn assign_with_type<T, IntoT>(&mut self, component: IntoT)
where IntoT: Into<T>, S: Assign<T, IntoT>,

Sets the value of a component by its type. Read more
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<C, E> EntryToVal<C> for E
where C: Collection<Entry = E>,

Source§

type Val = <C as Collection>::Val

The type of values stored in the collection. This might be distinct from Entry in complex collections. For example, in a HashMap, while Entry might be a ( key, value ) tuple, Val might only be the value part.
Source§

fn entry_to_val(self) -> <E as EntryToVal<C>>::Val

Converts an entry into a value representation specific to the type of collection. This conversion is crucial for handling operations on entries, especially when they need to be treated or accessed as individual values, such as retrieving the value part from a key-value pair in a hash map.
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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<'a, T> ToStringWith<WithDebug> for T
where T: Debug + ?Sized,

Source§

fn to_string_with<'s>(&'s self) -> Cow<'s, str>

Converts the type to a string using Debug formatting.

Source§

impl<'a, T> ToStringWith<WithDebugMultiline> for T
where T: Debug + ?Sized,

Source§

fn to_string_with<'s>(&'s self) -> Cow<'s, str>

Converts the type to a string using Debug formatting.

Source§

impl<Initial, Error, Final> TransitiveTryFrom<Error, Initial> for Final

Source§

fn transitive_try_from<Transitive>(src: Initial) -> Result<Self, Error>
where Transitive: TryFrom<Initial>, Self: TryFrom<Transitive, Error = Error>, Error: From<<Transitive as TryFrom<Initial>>::Error>,

Performs a transitive try_from conversion. Read more
Source§

impl<Error, Final, Initial> TransitiveTryInto<Error, Final> for Initial

Source§

fn transitive_try_into<Transitive>(self) -> Result<Final, Error>
where Self: TryInto<Transitive>, Transitive: TryInto<Final, Error = Error>, Error: From<Self::Error>,

Performs a transitive try_into conversion. Read more
Source§

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

Source§

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>,

Source§

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.
Source§

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

Source§

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

Return name of type of variable.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<C, Val> ValToEntry<C> for Val
where C: CollectionValToEntry<Val>,

Source§

fn val_to_entry(self) -> <C as CollectionValToEntry<Val>>::Entry

Invokes the val_to_entry function of the CollectionValToEntry trait to convert the value to an entry.

Source§

type Entry = <C as CollectionValToEntry<Val>>::Entry

Represents the type of entry that corresponds to the value within the collection.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

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