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>
impl<T: Trace + 'static> Cc<T>
source§impl<T: ?Sized + Trace + 'static> Cc<T>
impl<T: ?Sized + Trace + 'static> Cc<T>
sourcepub fn ptr_eq(this: &Cc<T>, other: &Cc<T>) -> bool
pub fn ptr_eq(this: &Cc<T>, other: &Cc<T>) -> bool
Returns true
if the two Cc
s point to the same allocation. This function ignores the metadata of dyn Trait
pointers.
sourcepub fn strong_count(&self) -> u32
pub fn strong_count(&self) -> u32
Returns the number of Cc
s to the pointed allocation.
sourcepub fn is_unique(&self) -> bool
pub fn is_unique(&self) -> bool
Returns true
if the strong reference count is 1
, false
otherwise.
sourcepub fn finalize_again(&mut self)
Available on crate feature finalization
only.
pub fn finalize_again(&mut self)
finalization
only.Makes the value in the managed allocation finalizable again.
§Panics
Panics if called during a collection.
sourcepub fn already_finalized(&self) -> bool
Available on crate feature finalization
only.
pub fn already_finalized(&self) -> bool
finalization
only.Returns true
if the value in the managed allocation has already been finalized, false
otherwise.
sourcepub fn mark_alive(&self)
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>>
impl<T: Trace + 'static> Cc<Weakable<T>>
sourcepub fn new_weakable(t: T) -> Self
Available on crate feature weak-ptr
only.
pub fn new_weakable(t: T) -> Self
weak-ptr
only.Creates a new WeakableCc
.
sourcepub fn new_cyclic<F>(f: F) -> Cc<Weakable<T>>
Available on crate feature weak-ptr
only.
pub fn new_cyclic<F>(f: F) -> Cc<Weakable<T>>
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(),
}
});
Trait Implementations§
source§impl<T: ?Sized + Trace + 'static> Clone for Cc<T>
impl<T: ?Sized + Trace + 'static> Clone for Cc<T>
source§fn clone(&self) -> Self
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)
fn clone_from(&mut self, source: &Self)
source
. Read moreimpl<T, U> CoerceUnsized<Cc<U>> for Cc<T>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)