Expand description

This module implements tagged pointers.

In order to utilize the pointer packing, you must have two types: a pointer, and a tag.

The pointer must implement the Pointer trait, with the primary requirement being convertible to and from a raw pointer. Note that the pointer must be dereferenceable, so raw pointers generally cannot implement the Pointer trait. This implies that the pointer must also be non-null.

Many common pointer types already implement the Pointer trait.

The tag must implement the Tag trait.

We assert that the tag and the Pointer types are compatible at compile time.





  • Returns the number of bits available for use for tags in a pointer to T (this is based on T’s alignment).
  • Returns the correct Tag::BITS constant for a set of tag values.