pub trait AsRaw<T>: Sealed {
// Required method
fn as_raw(&self) -> *mut T;
}
Expand description
A trait describing things that can be turned into a raw pointer.
This is just an abstraction of things that can be passed to the
compare_and_swap
.
§Examples
use std::ptr;
use std::sync::Arc;
use arc_swap::ArcSwapOption;
let a = Arc::new(42);
let shared = ArcSwapOption::from(Some(Arc::clone(&a)));
shared.compare_and_swap(&a, Some(Arc::clone(&a)));
shared.compare_and_swap(&None::<Arc<_>>, Some(Arc::clone(&a)));
shared.compare_and_swap(shared.load(), Some(Arc::clone(&a)));
shared.compare_and_swap(&shared.load(), Some(Arc::clone(&a)));
shared.compare_and_swap(ptr::null(), Some(Arc::clone(&a)));
Due to technical limitation, this is not implemented for owned Arc
/Option<Arc<_>>
, they
need to be borrowed.