wiwi::rc

Struct Rc

Source
pub struct Rc<C, V, S>
where C: Counter,
{ /* private fields */ }
Expand description

Reference counted thin pointer, that can hold one sized value and one (dynamically sized) slice

Implementations§

Source§

impl<C, V> Rc<C, V, ()>
where C: Counter,

Source

pub fn from_value(value: V) -> Self

Creates a reference counter from a (sized) value, storing it in the value field

Source§

impl<C, S> Rc<C, (), S>
where C: Counter,

Source

pub fn from_array_into_slice<const N: usize>(array: [S; N]) -> Self

Creates a reference counter from an array, storing it in the slice field and erasing the array length from the type

If you want to keep the const length of the array, you should use from_value instead. The memory usage of the RC allocation actually does not differ between these two.

Source§

impl<C, S> Rc<C, (), S>
where C: Counter, S: Clone,

Source

pub fn from_slice_clone(slice: &[S]) -> Self

Creates a reference counter from a slice, cloning all elements into the slice field

If your slice contains elements that implement copy, you should use from_slice_copy instead, which can be more efficient. (Rust, specialisation when?)

Source§

impl<C, S> Rc<C, (), S>
where C: Counter, S: Copy,

Source

pub fn from_slice_copy(slice: &[S]) -> Self

Creates a reference counter from a slice, copying all elements into the slice field

Source§

impl<C, V, S> Rc<C, V, S>
where C: Counter,

Source

pub fn from_value_and_array_into_slice<const N: usize>( value: V, array: [S; N], ) -> Self

Creates a reference counter from a value and an array, with the array being stored in the slice field

Source§

impl<C, V, S> Rc<C, V, S>
where C: Counter, S: Clone,

Source

pub fn from_value_and_slice_clone(value: V, slice: &[S]) -> Self

Creates a reference counter from a value and a slice, cloning all elements of the slice into the slice field

If your slice contains elements that implement copy, you should use from_value_and_slice_copy instead, which can be more efficient. (Rust, specialisation when?)

Source§

impl<C, V, S> Rc<C, V, S>
where C: Counter, S: Copy,

Source

pub fn from_value_and_slice_copy(value: V, slice: &[S]) -> Self

Creates a reference counter from a value and a slice, copying all elements of the slice into the slice field

Source§

impl<C, V, S> Rc<C, V, S>
where C: Counter,

Source

pub fn as_value_ref(&self) -> &V

Gets an immurable reference to the value stored in the value field

Source

pub fn as_slice_ref(&self) -> &[S]

Gets an immurable reference to the slice stored in the slice field

Source

pub fn strong_count(&self) -> usize

Gets the strong pointer count

Source

pub fn weak_count(&self) -> usize

Gets the weak pointer count

Source

pub fn downgrade(&self) -> RcWeak<C, V, S>

“Downgrades” this pointer, returning a weak pointer RcWeak to the data

Trait Implementations§

Source§

impl<C, V, S> Clone for Rc<C, V, S>
where C: Counter,

Source§

fn clone(&self) -> Self

Creates a new strong pointer to the same allocation, incrementing the strong count

1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C, V, S> Drop for Rc<C, V, S>
where C: Counter,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<C, V, S> Send for Rc<C, V, S>
where C: Counter + Send, V: Send, S: Send,

Source§

impl<C, V, S> Sync for Rc<C, V, S>
where C: Counter + Sync, V: Sync, S: Sync,

Auto Trait Implementations§

§

impl<C, V, S> Freeze for Rc<C, V, S>

§

impl<C, V, S> RefUnwindSafe for Rc<C, V, S>

§

impl<C, V, S> Unpin for Rc<C, V, S>

§

impl<C, V, S> UnwindSafe for Rc<C, V, S>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> Encode for T

Source§

fn encode<E>(self) -> <E as Encoding>::EncodeOutput
where T: Encodable<E>, E: Encoding,

Source§

fn decode<E>(self) -> <E as Encoding>::DecodeOutput
where T: Decodable<E>, E: Encoding,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.