Trait bitvec::ptr::Mutability [−][src]
pub trait Mutability: 'static + Copy + Sealed {
const CONTAINS_MUTABILITY: bool;
const PEANO_NUMBER: usize;
const SELF: Self;
const RENDER: &'static str;
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.
Associated Constants
const CONTAINS_MUTABILITY: bool
const CONTAINS_MUTABILITY: bool
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
const PEANO_NUMBER: usize
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.