Skip to main content

CowMut

Struct CowMut 

Source
pub struct CowMut<'a, T: Clone> { /* private fields */ }
Expand description

A structure the engine may write, borrowed so that it is copied only when it is written.

The store shares its interner, topology and edge properties with the reader’s fold through Arcs. Handing the engine &mut to them meant Arc::make_mut up front, so every commit that ran the engine copied all three whole the first time after a fold, though most commits derive nothing (ledger row 126). Reads go through Deref, which never copies; the first &mut use (DerefMut) copies the shared value then, once.

Trait Implementations§

Source§

impl<T: Clone> Deref for CowMut<'_, T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &T

Dereferences the value.
Source§

impl<T: Clone> DerefMut for CowMut<'_, T>

Source§

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

Mutably dereferences the value.
Source§

impl<'a, T: Clone> From<&'a mut Arc<T>> for CowMut<'a, T>

Source§

fn from(arc: &'a mut Arc<T>) -> Self

Converts to this type from the input type.
Source§

impl<'a, T: Clone> From<&'a mut T> for CowMut<'a, T>

Source§

fn from(value: &'a mut T) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a, T> !UnwindSafe for CowMut<'a, T>

§

impl<'a, T> Freeze for CowMut<'a, T>
where CowSlot<'a, T>: Freeze,

§

impl<'a, T> RefUnwindSafe for CowMut<'a, T>
where CowSlot<'a, T>: RefUnwindSafe,

§

impl<'a, T> Send for CowMut<'a, T>
where CowSlot<'a, T>: Send,

§

impl<'a, T> Sync for CowMut<'a, T>
where CowSlot<'a, T>: Sync,

§

impl<'a, T> Unpin for CowMut<'a, T>
where CowSlot<'a, T>: Unpin,

§

impl<'a, T> UnsafeUnpin for CowMut<'a, T>
where CowSlot<'a, T>: UnsafeUnpin,

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<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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<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> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.