Struct rust_cc::Cc

source ·
pub struct Cc<T: ?Sized + Trace + 'static> { /* private fields */ }
Expand description

A thread-local cycle collected pointer.

See the module-level documentation for more details.

Implementations§

source§

impl<T: Trace + 'static> Cc<T>

source

pub fn new(t: T) -> Cc<T>

Creates a new Cc.

§Collection

This method may start a collection when the auto-collect feature is enabled.

See the config module documentation for more details.

§Panics

Panics if the automatically-stared collection panics.

source

pub fn into_inner(self) -> T

Takes out the value inside a Cc.

§Panics

Panics if the Cc is not unique (see is_unique).

source§

impl<T: ?Sized + Trace + 'static> Cc<T>

source

pub fn ptr_eq(this: &Cc<T>, other: &Cc<T>) -> bool

Returns true if the two Ccs point to the same allocation. This function ignores the metadata of dyn Trait pointers.

source

pub fn strong_count(&self) -> u32

Returns the number of Ccs to the pointed allocation.

source

pub fn is_unique(&self) -> bool

Returns true if the strong reference count is 1, false otherwise.

source

pub fn finalize_again(&mut self)

Available on crate feature finalization only.

Makes the value in the managed allocation finalizable again.

§Panics

Panics if called during a collection.

source

pub fn already_finalized(&self) -> bool

Available on crate feature finalization only.

Returns true if the value in the managed allocation has already been finalized, false otherwise.

source

pub fn mark_alive(&self)

Marks the managed allocation as alive.

Every time a Cc is dropped, the pointed allocation is buffered to be processed in the next collection. This method simply removes the managed allocation from the buffer, potentially reducing the amount of work needed to be done by the collector.

This method is a no-op when called on a Cc pointing to an allocation which is not buffered.

source§

impl<T: Trace + 'static> Cc<Weakable<T>>

source

pub fn new_weakable(t: T) -> Self

Available on crate feature weak-ptr only.

Creates a new WeakableCc.

source

pub fn new_cyclic<F>(f: F) -> Cc<Weakable<T>>
where F: FnOnce(&Weak<T>) -> T,

Available on crate feature weak-ptr only.

Creates a new WeakableCc<T> while providing a Weak<T> pointer to the allocation, to allow the creation of a T which holds a weak pointer to itself.

§Collection

This method may start a collection when the auto-collect feature is enabled.

See the config module documentation for more details.

§Panics

Panics if the provided closure or the automatically-stared collection panics.

§Example
#[derive(Trace, Finalize)]
struct Cyclic {
    cyclic: Weak<Self>,
}

let cyclic = Cc::new_cyclic(|weak| {
    Cyclic {
         cyclic: weak.clone(),
    }
});
source§

impl<T: ?Sized + Trace + 'static> Cc<Weakable<T>>

source

pub fn downgrade(&self) -> Weak<T>

Available on crate feature weak-ptr only.

Creates a new Weak pointer to the managed allocation, increasing the weak reference count.

§Panics

Panics if the strong reference count exceeds the maximum supported.

source

pub fn weak_count(&self) -> u32

Available on crate feature weak-ptr only.

Returns the number of Weaks to the pointed allocation.

Trait Implementations§

source§

impl<T: ?Sized + Trace + 'static> Clone for Cc<T>

source§

fn clone(&self) -> Self

Makes a clone of the Cc pointer.

This creates another pointer to the same allocation, increasing the strong reference count.

Cloning a Cc also marks the managed allocation as alive. See mark_alive for more details.

§Panics

Panics if the strong reference count exceeds the maximum supported.

1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<T: ?Sized + Trace + 'static> Deref for Cc<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<T: ?Sized + Trace + 'static> Drop for Cc<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T: ?Sized + Trace + 'static> Finalize for Cc<T>

source§

fn finalize(&self)

The finalizer, which is called after an object becomes garbage and before droping it. Read more
source§

impl<T: ?Sized + Trace + 'static> Trace for Cc<T>

source§

fn trace(&self, ctx: &mut Context<'_>)

Traces the contained Ccs. See Trace for more information.
source§

impl<T, U> CoerceUnsized<Cc<U>> for Cc<T>
where T: ?Sized + Trace + Unsize<U> + 'static, U: ?Sized + Trace + 'static,

Available on crate feature nightly only.

Auto Trait Implementations§

§

impl<T> Freeze for Cc<T>
where T: ?Sized,

§

impl<T> !RefUnwindSafe for Cc<T>

§

impl<T> !Send for Cc<T>

§

impl<T> !Sync for Cc<T>

§

impl<T> Unpin for Cc<T>
where T: ?Sized,

§

impl<T> !UnwindSafe for Cc<T>

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§

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

§

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

§

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.