Put this in your Cargo.toml
:
toml
[dependencies]
atomic-stamped-ptr = "0.1.0"
And this in your crate root:
rust
extern crate atomic_stamped_ptr;
rust
let a = AtomicStampedPtr::new(ptr);
Or
rust
a.store(ptr);
let (ptr, version) = a.load();
let new_ptr = a.swap(ptr);
let (p, v) = a.compare_and_swap((ptr, version), new_ptr);
if (p, v) == (ptr, version) {
// Success
} else {
// Failure
}
if let Ok((p, v)) == a.compare_exchange((ptr, version), new_ptr) {
// Success
} else {
// Failure
}