pub struct RefCounter { /* private fields */ }
Expand description
RefCounter is a data-structure designed specifically for
internal use in UniquePointer
allowing reference counts to be
shared across clones of UniquePointer
.
RefCounter uses relatively obscure rust techniques under the
hood to allow writing in non-mut references in strategic occasions
such as incrementing its reference count within its Clone
implementation.
Finally, write
, reset
,
incr
, incr_by
,
decr
, decr_by
allows RefCounter
instances to modify non-mut instances &RefCounter
of
RefCounter such that implementors don’t need to resort to
UniquePointer::unlock_reference
.
Implementations§
Source§impl RefCounter
impl RefCounter
Sourcepub fn null() -> RefCounter
pub fn null() -> RefCounter
new
creates a new RefCounter
with its internal state
equivalent to zero.
Sourcepub fn new() -> RefCounter
pub fn new() -> RefCounter
new
creates a new RefCounter
with the value 1
Sourcepub fn reset(&self)
pub fn reset(&self)
reset
resets a RefCounter
to one which is the equivalent
state of a new
.
Sourcepub fn drain(&mut self)
pub fn drain(&mut self)
drain
deallocates the memory used by a RefCounter
resetting its internals so as to behave as though it has been
written 0
.
pub fn read(&self) -> usize
Sourcepub fn write(&mut self, data: usize)
pub fn write(&mut self, data: usize)
write
writes a usize
into a RefCounter
as opposed to
incrementing or decrementing it.
Sourcepub fn inner_ref<'c>(&self) -> &'c usize
pub fn inner_ref<'c>(&self) -> &'c usize
inner_ref
returns a reference to the internal data of a
RefCounter
. Writing to the memory area if not already
allocated.
Sourcepub fn inner_mut<'c>(&mut self) -> &'c mut usize
pub fn inner_mut<'c>(&mut self) -> &'c mut usize
inner_mut
returns a mutable reference to the internal data
of a RefCounter
. Writing to the memory area if not already
allocated.
Trait Implementations§
Source§impl AddAssign<usize> for RefCounter
impl AddAssign<usize> for RefCounter
Source§fn add_assign(&mut self, other: usize)
fn add_assign(&mut self, other: usize)
+=
operation. Read moreSource§impl AsMut<usize> for RefCounter
impl AsMut<usize> for RefCounter
Source§impl AsRef<usize> for RefCounter
impl AsRef<usize> for RefCounter
Source§impl Clone for RefCounter
impl Clone for RefCounter
Source§fn clone(&self) -> RefCounter
fn clone(&self) -> RefCounter
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RefCounter
impl Debug for RefCounter
Source§impl Deref for RefCounter
impl Deref for RefCounter
Source§impl DerefMut for RefCounter
impl DerefMut for RefCounter
Source§impl Display for RefCounter
impl Display for RefCounter
Source§impl Drop for RefCounter
impl Drop for RefCounter
Source§impl From<usize> for RefCounter
impl From<usize> for RefCounter
Source§fn from(refs: usize) -> RefCounter
fn from(refs: usize) -> RefCounter
Source§impl Hash for RefCounter
impl Hash for RefCounter
Source§impl Ord for RefCounter
impl Ord for RefCounter
Source§fn cmp(&self, other: &RefCounter) -> Ordering
fn cmp(&self, other: &RefCounter) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq<usize> for RefCounter
impl PartialEq<usize> for RefCounter
Source§impl PartialEq for RefCounter
impl PartialEq for RefCounter
Source§impl PartialOrd<usize> for RefCounter
impl PartialOrd<usize> for RefCounter
Source§impl PartialOrd for RefCounter
impl PartialOrd for RefCounter
Source§impl SubAssign<usize> for RefCounter
impl SubAssign<usize> for RefCounter
Source§fn sub_assign(&mut self, other: usize)
fn sub_assign(&mut self, other: usize)
-=
operation. Read more