RS.CLIPPY.CAST_PTR_ALIGNMENT
Cast from a pointer to a more strictly aligned pointer
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: cast_ptr_alignment. Copyright ©2025 The Rust Team. All rights reserved.
What it does
Checks for casts, using as or pointer::cast, from a
less strictly aligned pointer to a more strictly aligned pointer.
Why is this bad?
Dereferencing the resulting pointer may be undefined behavior.
Known problems
Using std::ptr::read_unaligned and std::ptr::write_unaligned or
similar on the resulting pointer is fine. Is over-zealous: casts with
manual alignment checks or casts like u64 -> u8 -> u16 can be
fine. Miri is able to do a more in-depth analysis.
Example
let _ = (&1u8 as *const u8) as *const u16;
let _ = (&mut 1u8 as *mut u8) as *mut u16;
(&1u8 as *const u8).cast::<u16>();
(&mut 1u8 as *mut u8).cast::<u16>();