pub trait Pointable {
    type Init;
    const ALIGN: usize;
    // Required methods
    unsafe fn init(init: Self::Init) -> usize;
    unsafe fn deref<'a>(ptr: usize) -> &'a Self;
    unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut Self;
    unsafe fn drop(ptr: usize);
}Expand description
Types that are pointed to by a single word.
In concurrent programming, it is necessary to represent an object within a word because atomic operations (e.g., reads, writes, read-modify-writes) support only single words. This trait qualifies such types that are pointed to by a single word.
The trait generalizes Box<T> for a sized type T.  In a box, an object of type T is
allocated in heap and it is owned by a single-word pointer.  This trait is also implemented for
[MaybeUninit<T>] by storing its size along with its elements and pointing to the pair of array
size and elements.
Pointers to Pointable types can be stored in Atomic, Owned, and Shared.  In
particular, Crossbeam supports dynamically sized slices as follows.
use std::mem::MaybeUninit;
use crossbeam_epoch::Owned;
let o = Owned::<[MaybeUninit<i32>]>::init(10); // allocating [i32; 10]Required Associated Constants§
Required Associated Types§
Required Methods§
Sourceunsafe fn deref<'a>(ptr: usize) -> &'a Self
 
unsafe fn deref<'a>(ptr: usize) -> &'a Self
Dereferences the given pointer.
§Safety
- The given ptrshould have been initialized withPointable::init.
- ptrshould not have yet been dropped by- Pointable::drop.
- ptrshould not be mutably dereferenced by- Pointable::deref_mutconcurrently.
Sourceunsafe fn deref_mut<'a>(ptr: usize) -> &'a mut Self
 
unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut Self
Mutably dereferences the given pointer.
§Safety
- The given ptrshould have been initialized withPointable::init.
- ptrshould not have yet been dropped by- Pointable::drop.
- ptrshould not be dereferenced by- Pointable::derefor- Pointable::deref_mutconcurrently.
Sourceunsafe fn drop(ptr: usize)
 
unsafe fn drop(ptr: usize)
Drops the object pointed to by the given pointer.
§Safety
- The given ptrshould have been initialized withPointable::init.
- ptrshould not have yet been dropped by- Pointable::drop.
- ptrshould not be dereferenced by- Pointable::derefor- Pointable::deref_mutconcurrently.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.