pub struct Owned<T> { /* fields omitted */ }An owned heap-allocated object.
This type is very similar to Box<T>.
The pointer must be properly aligned. Since it is aligned, a tag can be stored into the unused
least significant bits of the address.
Allocates value on the heap and returns a new owned pointer pointing to it.
use crossbeam_epoch::Owned;
let o = Owned::new(1234);
Returns a new owned pointer pointing to raw.
This function is unsafe because improper use may lead to memory problems. Argument raw
must be a valid pointer. Also, a double-free may occur if the function is called twice on
the same raw pointer.
Panics if raw is not properly aligned.
use crossbeam_epoch::Owned;
let o = unsafe { Owned::from_raw(Box::into_raw(Box::new(1234))) };
Converts the owned pointer into a Shared.
use crossbeam_epoch::{self as epoch, Owned};
let o = Owned::new(1234);
let guard = &epoch::pin();
let p = o.into_shared(guard);
Converts the owned pointer into a Box.
use crossbeam_epoch::{self as epoch, Owned};
let o = Owned::new(1234);
let b: Box<i32> = o.into_box();
assert_eq!(*b, 1234);
Returns the tag stored within the pointer.
use crossbeam_epoch::Owned;
assert_eq!(Owned::new(1234).tag(), 0);
Returns the same pointer, but tagged with tag. tag is truncated to be fit into the
unused bits of the pointer to T.
use crossbeam_epoch::Owned;
let o = Owned::new(0u64);
assert_eq!(o.tag(), 0);
let o = o.with_tag(2);
assert_eq!(o.tag(), 2);
Returns a new atomic pointer pointing to owned.
use crossbeam_epoch::{Atomic, Owned};
let a = Atomic::<i32>::from(Owned::new(1234));
Returns the machine representation of the pointer.
Returns a new pointer pointing to the tagged pointer data.
Panics if the data is zero in debug mode.
Executes the destructor for this type. Read more
Formats the value using the given formatter. Read more
Performs copy-assignment from source. Read more
type Target = T
The resulting type after dereferencing.
Mutably dereferences the value.
Returns a new owned pointer pointing to b.
Panics if the pointer (the Box) is not properly aligned.
use crossbeam_epoch::Owned;
let o = unsafe { Owned::from_raw(Box::into_raw(Box::new(1234))) };
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more