### 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::(); (&mut 1u8 as *mut u8).cast::(); ```