1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
//! # xarc
//! 
//! `xarc` provides atomically swappable atomically refcounted smart pointers
//! as a safer building block for lockfree algorithms than raw atomic pointers.
//! 
//! `Xarc` is comparable to `Arc` but with the additional ability to atomically
//! be swapped into and out of `AtomicXarc`.
//! `Xarc` is dereferenceable but cannot have its contents atomically swapped.
//! `AtomicXarc` can have its contents atomically swapped but is not dereferenceable.

#![crate_name = "xarc"]

#![no_std]
extern crate alloc;

mod internal;
mod atomic;
mod pointer;

pub use atomic::AtomicXarc;
pub use pointer::Xarc;