Trait wyz::comu::Mutability [−][src]
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.
Associated Constants
const CONTAINS_MUTABILITY: bool
[src]
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.
const PEANO_NUMBER: usize
[src]
Counts the layers of Frozen<>
wrapping around a base Const
or Mut
.
const SELF: Self
[src]
Allow instances to be constructed generically.
const RENDER: &'static str
[src]
One of *const
or *mut
.
Provided methods
fn freeze(self) -> Frozen<Self>
[src]
Freeze this type, wrapping it in a const
marker that may later be
removed to thaw it.
fn thaw(Frozen { inner: inner }: Frozen<Self>) -> Self
[src]
Thaw a previously-frozen type, removing its Frozen
marker and
restoring it to Self
.
Implementors
impl Mutability for Const
[src]
impl Mutability for Mut
[src]
impl<Inner> Mutability for Frozen<Inner> where
Inner: Mutability + Sized,
[src]
Inner: Mutability + Sized,