Trait wyz::comu::Mutability
source · pub trait Mutability: 'static + Copy + Sized + Sealed {
const SELF: Self;
const RENDER: &'static str;
const CONTAINS_MUTABILITY: bool = false;
const PEANO_NUMBER: usize = 0usize;
// Provided methods
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§
Provided Associated Constants§
sourceconst CONTAINS_MUTABILITY: bool = false
const CONTAINS_MUTABILITY: bool = false
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.
sourceconst PEANO_NUMBER: usize = 0usize
const PEANO_NUMBER: usize = 0usize
Counts the layers of Frozen<> wrapping around a base Const or Mut.