# Trait rustc_data_structures::tagged_ptr::Tag

source ·

    pub unsafe trait Tag: Copy {
        const BITS: u32;

        // Required methods
        fn into_usize(self) -> usize;
        unsafe fn from_usize(tag: usize) -> Self;
    }

Expand description

This describes tags that the `TaggedPtr` struct can hold.

## §Safety

The `BITS` constant must be correct.

No more than `BITS` least-significant bits may be set in the returned usize.

## Required Associated Constants§

source

#### const BITS: u32

Number of least-significant bits in the return value of `into_usize` which may be non-zero. In other words this is the bit width of the value.

## Required Methods§

source

#### fn into_usize(self) -> usize

Turns this tag into an integer.

The inverse of this function is `from_usize`.

This function guarantees that only the least-significant `Self::BITS` bits can be non-zero.

source

#### unsafe fn from_usize(tag: usize) -> Self

Re-creates the tag from the integer returned by `into_usize`.

##### §Safety

The passed `tag` must be returned from `into_usize`.

## Object Safety§

This trait is not object safe.

## Implementors§