Tag in rustc_data_structures::tagged_ptr - Rust
Description: This describes tags that the `TaggedRef` struct can hold.

Skip to main content

## Tag

# Trait 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 `TaggedRef` struct can hold.

## §Safety

- The `BITS` constant must be correct.
- No more than `BITS` least-significant bits may be set in the returned usize.
- `Eq` and `Hash` must be implementable with the returned `usize` from `into_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`.

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

## Implementors§