### What it does Checks for calls to `core::mem::swap` where either parameter is derived from a pointer ### Why is this bad? When at least one parameter to `swap` is derived from a pointer it may overlap with the other. This would then lead to undefined behavior. ### Example ``` unsafe fn swap(x: &[*mut u32], y: &[*mut u32]) { for (&x, &y) in x.iter().zip(y) { core::mem::swap(&mut *x, &mut *y); } } ``` Use instead: ``` unsafe fn swap(x: &[*mut u32], y: &[*mut u32]) { for (&x, &y) in x.iter().zip(y) { core::ptr::swap(x, y); } } ```