Open
Description
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 rust-lang/rust#56604 (comment), #12791, rust-lang/rust#125897.
Reproducer
I tried this code:
#![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
Nightly channel
Build using the Nightly version: 1.80.0-nightly
(2024-06-02 032af18af578f4283a29)
Additional Labels
No response