Skip to main content

## PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS

# Static PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS

Source

    pub static PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS: &Lint

Expand description

The `ptr_to_integer_transmute_in_consts` lint detects pointer to integer transmute in const functions and associated constants.

#### §Example

    const fn foo(ptr: *const u8) -> usize {
       unsafe {
           std::mem::transmute::<*const u8, usize>(ptr)
       }
    }

{{produces}}

#### §Explanation

Transmuting pointers to integers in a `const` context is undefined behavior. Any attempt to use the resulting integer will abort const-evaluation.

But sometimes the compiler might not emit an error for pointer to integer transmutes inside const functions and associated consts because they are evaluated only when referenced. Therefore, this lint serves as an extra layer of defense to prevent any undefined behavior from compiling without any warnings or errors.

See std::mem::transmute in the reference for more details.