rustc_lint::builtin

Static PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS

pub static PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS: &'static 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.