Struct owned_pin::sync::RefCount

source ·
pub struct RefCount { /* private fields */ }
Expand description

An intrusive reference counter.

Users should place this structure into their own type, and implement RefCounted to enable the support for intrusive ref-counting.

The ways to initialize a RefCount is only to use its new method or use the Default trait.

For users who want some unsafe hints, when some type including this structure wants to implement Clone, a new instance of RefCount should be assigned to the cloned value, or undefined behavior will happen in place. Hence, no “byte copying” should be considered.

Implementations§

source§

impl RefCount

source

pub const fn new() -> Self

Creates a new intrusive reference counter.

The user should not and cannot modify this structure by any means.

source

pub fn get(&self) -> usize

Retrives the current reference count.

The user should not and cannot modify this structure by any means.

Trait Implementations§

source§

impl Debug for RefCount

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for RefCount

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl RefCounted for RefCount

source§

fn ref_count(&self) -> &RefCount

Gets the reference counter stored within this type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Init<T> for T

source§

unsafe fn __init(self, slot: *mut T) -> Result<(), Infallible>

Initializes slot. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, E, I> PinInit<T, E> for I
where I: Init<T, E>, T: ?Sized,

source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.