ArcLite

Struct ArcLite 

Source
pub struct ArcLite<T> { /* private fields */ }
Expand description

A lightweight atomic reference counter similar to Arc but with manual control.

This provides thread-safe reference counting without requiring std::sync::Arc. Unlike standard Arc, this allows manual increment/decrement operations which can be useful for intrusive data structures.

Implementations§

Source§

impl<T> ArcLite<T>

Source

pub fn new(data: T) -> Self

Create a new ArcLite with the given data.

§Arguments
  • data - The data to store in the ArcLite
§Returns

A new ArcLite instance with reference count of 1.

Source

pub fn try_inc(&self) -> bool

Increment the reference count.

This is useful for intrusive data structures where you need manual control over the reference count.

§Returns

true if the increment succeeded, false if the object was being destroyed.

Source

pub fn dec(&self) -> usize

Decrement the reference count.

If the count reaches zero, the object will be deallocated.

§Returns

The previous reference count value.

Source

pub fn ref_count(&self) -> usize

Get the current reference count.

Note that this value may change immediately after being read in multi-threaded environments.

Trait Implementations§

Source§

impl<T> Clone for ArcLite<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T> Deref for ArcLite<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl<T> Drop for ArcLite<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Send + Sync> Send for ArcLite<T>

Source§

impl<T: Send + Sync> Sync for ArcLite<T>

Auto Trait Implementations§

§

impl<T> Freeze for ArcLite<T>

§

impl<T> RefUnwindSafe for ArcLite<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for ArcLite<T>

§

impl<T> UnwindSafe for ArcLite<T>
where T: RefUnwindSafe,

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.