pub trait Mutability: 'static + Copy + Sealed {
    const SELF: Self;
    const RENDER: &'static str;
    const CONTAINS_MUTABILITY: bool = false;
    const PEANO_NUMBER: usize = 0usize;

    fn freeze(self) -> Frozen<Self> { ... }
    fn thaw(Frozen<Self>) -> Self { ... }
}
Expand description

Generalized mutability permissions.

This trait enables referent structures to be generic over the write permissions of their referent data. As an example, the standard library defines *const T and *mut T as two duplicate type families, that cannot share any logic at all.

An equivalent library implementation might be Ptr<T, M: Mutability>, where shared logic can be placed in an impl<T, M> Ptr<T, M> block, but unique logic (such as freezing a Mut pointer, or unfreezing a Frozen<Mut>) can be placed in specialized impl<T> Ptr<T, Mut> blocks.

Required Associated Constants

Allow instances to be constructed generically.

One of *const or *mut.

Provided Associated Constants

Marks whether this type contains mutability permissions within it.

This is false for Const and true for Mut. Frozen wrappers atop either of these types inherit their interior marker.

Counts the layers of Frozen<> wrapping around a base Const or Mut.

Provided Methods

Freeze this type, wrapping it in a const marker that may later be removed to thaw it.

Thaw a previously-frozen type, removing its Frozen marker and restoring it to Self.

Implementors