Struct tagged_pointer::TaggedPtr [−][src]
#[repr(transparent)]pub struct TaggedPtr<T, const BITS: usize>(_);Expand description
A tagged pointer: a space-efficient representation of a pointer and integer tag.
This type stores a pointer and an integer tag without taking up more space than a normal pointer (unless the fallback implementation is used; see the crate documentation).
The tagged pointer conceptually holds a NonNull<T> and a
certain number of bits of an integer tag.
BITS specifies how many bits are used for the tag. The alignment of T
must be large enough to store this many bits; see Self::new.
Implementations
Creates a new tagged pointer. Only the lower BITS bits of tag are
stored.
Panics
This function panics if the alignment of T is less than 2 to the
power of BITS. This ensures that all properly aligned pointers to T
will be aligned enough to store the specified number of bits of the
tag.
ptr should be “dereferencable” in the sense defined by
core::ptr. If it is not, this function or methods
of TaggedPtr may panic.
It is recommended that ptr be properly aligned (i.e., aligned to at
least mem::align_of::<T>()), but it may have a
smaller alignment. However, if its alignment is not at least
2 to the power of BITS, this function may panic.
Gets the pointer and tag stored by the tagged pointer. If you need
both the pointer and tag, this method may be more efficient than
calling Self::ptr and Self::tag separately.
Panics
If the pointer provided to Self::new wasn’t
“dereferencable”, this method may panic.
Gets the pointer stored by the tagged pointer, without the tag.
Equivalent to self.get().0.
Panics
If the pointer provided to Self::new wasn’t
“dereferencable”, this method may panic.
Gets the tag stored by the tagged pointer. Equivalent to
self.get().1.
Panics
If the pointer provided to Self::new wasn’t
“dereferencable”, this method may panic.
Trait Implementations
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more