### Summary `ptr::from_ref` creates a pointer that isn't safe to cast to `*mut T` but `ptr::from_mut(x).cast_const()` creates a pointer that is safe to cast to `*mut T`. Unless Clippy is sure that the resultant pointer is never going to be cast to `*mut T`, it should recommend `from_mut` when it sees an expression `r as *const T` where `r: &mut T`. See https://github.com/rust-lang/rust/issues/56604#issuecomment-2143193486, https://github.com/rust-lang/rust-clippy/issues/12791, https://github.com/rust-lang/rust/pull/125897. ### Reproducer I tried this code: ```rust #![deny(clippy::ref_as_ptr)] fn bar<T>(_x: *const T) {} fn foo<T>(x: &mut T) { bar(x as *const T); } ``` I expected to see this happen: Clippy should recommended `ptr::from_mut(x)` or `ptr::from_mut(x).cast_const()`. Instead, this happened: Clippy recommended `ptr::from_ref(x)`. ### Version ```text Nightly channel Build using the Nightly version: 1.80.0-nightly (2024-06-02 032af18af578f4283a29) ``` ### Additional Labels _No response_