111 lines
3.0 KiB
Rust
111 lines
3.0 KiB
Rust
|
#![warn(clippy::ref_as_ptr)]
|
||
|
#![allow(clippy::unnecessary_mut_passed)]
|
||
|
|
||
|
fn main() {
|
||
|
let _ = std::ptr::from_ref(&1u8);
|
||
|
let _ = std::ptr::from_ref::<u32>(&2u32);
|
||
|
let _ = std::ptr::from_ref::<f64>(&3.0f64);
|
||
|
|
||
|
let _ = std::ptr::from_ref(&4) as *const f32;
|
||
|
let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
|
||
|
|
||
|
let _ = std::ptr::from_ref(&mut 6u8);
|
||
|
let _ = std::ptr::from_ref::<u32>(&mut 7u32);
|
||
|
let _ = std::ptr::from_ref::<f64>(&mut 8.0f64);
|
||
|
|
||
|
let _ = std::ptr::from_ref(&mut 9) as *const f32;
|
||
|
let _ = std::ptr::from_ref::<f32>(&mut 10.0f32) as *const u32;
|
||
|
|
||
|
let _ = std::ptr::from_mut(&mut 11u8);
|
||
|
let _ = std::ptr::from_mut::<u32>(&mut 12u32);
|
||
|
let _ = std::ptr::from_mut::<f64>(&mut 13.0f64);
|
||
|
|
||
|
let _ = std::ptr::from_mut(&mut 14) as *const f32;
|
||
|
let _ = std::ptr::from_mut::<f32>(&mut 15.0f32) as *const u32;
|
||
|
|
||
|
let _ = std::ptr::from_ref(&1u8);
|
||
|
let _ = std::ptr::from_ref::<u32>(&2u32);
|
||
|
let _ = std::ptr::from_ref::<f64>(&3.0f64);
|
||
|
|
||
|
let _ = std::ptr::from_ref(&4) as *const f32;
|
||
|
let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
|
||
|
|
||
|
let val = 1;
|
||
|
let _ = std::ptr::from_ref(&val);
|
||
|
let _ = std::ptr::from_ref::<i32>(&val);
|
||
|
|
||
|
let _ = std::ptr::from_ref(&val) as *const f32;
|
||
|
let _ = std::ptr::from_ref::<i32>(&val) as *const f64;
|
||
|
|
||
|
let mut val: u8 = 2;
|
||
|
let _ = std::ptr::from_mut::<u8>(&mut val);
|
||
|
let _ = std::ptr::from_mut(&mut val);
|
||
|
|
||
|
let _ = std::ptr::from_ref::<u8>(&mut val);
|
||
|
let _ = std::ptr::from_ref(&mut val);
|
||
|
|
||
|
let _ = std::ptr::from_ref::<u8>(&mut val) as *const f64;
|
||
|
let _: *const Option<u8> = std::ptr::from_ref(&mut val) as *const _;
|
||
|
|
||
|
let _ = std::ptr::from_ref::<[usize; 7]>(&std::array::from_fn(|i| i * i));
|
||
|
let _ = std::ptr::from_ref::<[usize; 8]>(&mut std::array::from_fn(|i| i * i));
|
||
|
let _ = std::ptr::from_mut::<[usize; 9]>(&mut std::array::from_fn(|i| i * i));
|
||
|
}
|
||
|
|
||
|
#[clippy::msrv = "1.75"]
|
||
|
fn _msrv_1_75() {
|
||
|
let val = &42_i32;
|
||
|
let mut_val = &mut 42_i32;
|
||
|
|
||
|
// `std::ptr::from_{ref, mut}` was stabilized in 1.76. Do not lint this
|
||
|
let _ = val as *const i32;
|
||
|
let _ = mut_val as *mut i32;
|
||
|
}
|
||
|
|
||
|
#[clippy::msrv = "1.76"]
|
||
|
fn _msrv_1_76() {
|
||
|
let val = &42_i32;
|
||
|
let mut_val = &mut 42_i32;
|
||
|
|
||
|
let _ = std::ptr::from_ref::<i32>(val);
|
||
|
let _ = std::ptr::from_mut::<i32>(mut_val);
|
||
|
}
|
||
|
|
||
|
fn foo(val: &[u8]) {
|
||
|
let _ = std::ptr::from_ref(val);
|
||
|
let _ = std::ptr::from_ref::<[u8]>(val);
|
||
|
}
|
||
|
|
||
|
fn bar(val: &mut str) {
|
||
|
let _ = std::ptr::from_mut(val);
|
||
|
let _ = std::ptr::from_mut::<str>(val);
|
||
|
}
|
||
|
|
||
|
struct X<'a>(&'a i32);
|
||
|
|
||
|
impl<'a> X<'a> {
|
||
|
fn foo(&self) -> *const i64 {
|
||
|
std::ptr::from_ref(self.0) as *const _
|
||
|
}
|
||
|
|
||
|
fn bar(&mut self) -> *const i64 {
|
||
|
std::ptr::from_ref(self.0) as *const _
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct Y<'a>(&'a mut i32);
|
||
|
|
||
|
impl<'a> Y<'a> {
|
||
|
fn foo(&self) -> *const i64 {
|
||
|
std::ptr::from_ref(self.0) as *const _
|
||
|
}
|
||
|
|
||
|
fn bar(&mut self) -> *const i64 {
|
||
|
std::ptr::from_ref(self.0) as *const _
|
||
|
}
|
||
|
|
||
|
fn baz(&mut self) -> *const i64 {
|
||
|
std::ptr::from_mut(self.0) as *mut _
|
||
|
}
|
||
|
}
|