Expand description
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.
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.
The given raw
should have been derived from Owned
, and one raw
should not be converted
back by Owned::from_raw()
multiple times.
use crossbeam_epoch::Owned;
let o = unsafe { Owned::from_raw(Box::into_raw(Box::new(1234))) };
Converts the owned pointer into a Box
.
use crossbeam_epoch::Owned;
let o = Owned::new(1234);
let b: Box<i32> = o.into_box();
assert_eq!(*b, 1234);
Allocates value
on the heap and returns a new owned pointer pointing to it.
use crossbeam_epoch::Owned;
let o = Owned::new(1234);
Allocates value
on the heap and returns a new owned pointer pointing to it.
use crossbeam_epoch::Owned;
let o = Owned::<i32>::init(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);
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);
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Mutably dereferences the value.
Executes the destructor for this type. Read more
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))) };
Returns a new atomic pointer pointing to owned
.
use crossbeam_epoch::{Atomic, Owned};
let a = Atomic::<i32>::from(Owned::new(1234));
Returns a new pointer pointing to the tagged pointer data
.
Panics if the data is zero in debug mode.
Returns the machine representation of the pointer.
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
The type returned in the event of a conversion error.