1
1
#![warn(clippy::ref_as_ptr)]
2
2
#![allow(clippy::unnecessary_mut_passed)]
3
3
4
+ fn f<T>(_: T) {}
5
+
4
6
fn main() {
5
- let _ = std::ptr::from_ref(&1u8);
6
- let _ = std::ptr::from_ref::<u32>(&2u32);
7
- let _ = std::ptr::from_ref::<f64>(&3.0f64);
7
+ f( std::ptr::from_ref(&1u8) );
8
+ f( std::ptr::from_ref::<u32>(&2u32) );
9
+ f( std::ptr::from_ref::<f64>(&3.0f64) );
8
10
9
- let _ = std::ptr::from_ref(&4) as *const f32;
10
- let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
11
+ f( std::ptr::from_ref(&4) as *const f32) ;
12
+ f( std::ptr::from_ref::<f32>(&5.0f32) as *const u32) ;
11
13
12
- let _ = std::ptr::from_ref(&mut 6u8);
13
- let _ = std::ptr::from_ref::<u32>(&mut 7u32);
14
- let _ = std::ptr::from_ref::<f64>(&mut 8.0f64);
14
+ f( std::ptr::from_ref(&mut 6u8) );
15
+ f( std::ptr::from_ref::<u32>(&mut 7u32) );
16
+ f( std::ptr::from_ref::<f64>(&mut 8.0f64) );
15
17
16
- let _ = std::ptr::from_ref(&mut 9) as *const f32;
17
- let _ = std::ptr::from_ref::<f32>(&mut 10.0f32) as *const u32;
18
+ f( std::ptr::from_ref(&mut 9) as *const f32) ;
19
+ f( std::ptr::from_ref::<f32>(&mut 10.0f32) as *const u32) ;
18
20
19
- let _ = std::ptr::from_mut(&mut 11u8);
20
- let _ = std::ptr::from_mut::<u32>(&mut 12u32);
21
- let _ = std::ptr::from_mut::<f64>(&mut 13.0f64);
21
+ f( std::ptr::from_mut(&mut 11u8) );
22
+ f( std::ptr::from_mut::<u32>(&mut 12u32) );
23
+ f( std::ptr::from_mut::<f64>(&mut 13.0f64) );
22
24
23
- let _ = std::ptr::from_mut(&mut 14) as *const f32;
24
- let _ = std::ptr::from_mut::<f32>(&mut 15.0f32) as *const u32;
25
+ f( std::ptr::from_mut(&mut 14) as *const f32) ;
26
+ f( std::ptr::from_mut::<f32>(&mut 15.0f32) as *const u32) ;
25
27
26
- let _ = std::ptr::from_ref(&1u8);
27
- let _ = std::ptr::from_ref::<u32>(&2u32);
28
- let _ = std::ptr::from_ref::<f64>(&3.0f64);
28
+ f( std::ptr::from_ref(&1u8) );
29
+ f( std::ptr::from_ref::<u32>(&2u32) );
30
+ f( std::ptr::from_ref::<f64>(&3.0f64) );
29
31
30
- let _ = std::ptr::from_ref(&4) as *const f32;
31
- let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
32
+ f( std::ptr::from_ref(&4) as *const f32) ;
33
+ f( std::ptr::from_ref::<f32>(&5.0f32) as *const u32) ;
32
34
33
35
let val = 1;
34
- let _ = std::ptr::from_ref(&val);
35
- let _ = std::ptr::from_ref::<i32>(&val);
36
+ f( std::ptr::from_ref(&val) );
37
+ f( std::ptr::from_ref::<i32>(&val) );
36
38
37
- let _ = std::ptr::from_ref(&val) as *const f32;
38
- let _ = std::ptr::from_ref::<i32>(&val) as *const f64;
39
+ f( std::ptr::from_ref(&val) as *const f32) ;
40
+ f( std::ptr::from_ref::<i32>(&val) as *const f64) ;
39
41
40
42
let mut val: u8 = 2;
41
- let _ = std::ptr::from_mut::<u8>(&mut val);
42
- let _ = std::ptr::from_mut(&mut val);
43
+ f(std::ptr::from_mut::<u8>(&mut val));
44
+ f(std::ptr::from_mut(&mut val));
45
+
46
+ f(std::ptr::from_ref::<u8>(&mut val));
47
+ f(std::ptr::from_ref(&mut val));
43
48
44
- let _ = std::ptr::from_ref::<u8>(&mut val);
45
- let _ = std::ptr::from_ref(&mut val);
49
+ f( std::ptr::from_ref::<u8>(&mut val) as *const f64 );
50
+ f::<*const Option<u8>>( std::ptr::from_ref(&mut val) as *const _ );
46
51
47
- let _ = std::ptr::from_ref::<u8>(&mut val) as *const f64;
48
- let _: *const Option<u8> = std::ptr::from_ref(&mut val) as *const _;
52
+ f(std::ptr::from_ref::<[usize; 7]>(&std::array::from_fn(|i| i * i)));
53
+ f(std::ptr::from_ref::<[usize; 8]>(&mut std::array::from_fn(|i| i * i)));
54
+ f(std::ptr::from_mut::<[usize; 9]>(&mut std::array::from_fn(|i| i * i)));
49
55
50
- let _ = std::ptr::from_ref::<[usize; 7]>(&std::array::from_fn(|i| i * i)) ;
51
- let _ = std::ptr::from_ref::<[usize; 8]>( &mut std::array::from_fn(|i| i * i)) ;
52
- let _ = std::ptr::from_mut::<[usize; 9]>(&mut std::array::from_fn(|i| i * i)) ;
56
+ let _ = &String::new() as *const _ ;
57
+ let _ = &mut String::new() as *mut _ ;
58
+ const FOO: *const String = &String::new() as *const _ ;
53
59
}
54
60
55
61
#[clippy::msrv = "1.75"]
@@ -58,27 +64,27 @@ fn _msrv_1_75() {
58
64
let mut_val = &mut 42_i32;
59
65
60
66
// `std::ptr::from_{ref, mut}` was stabilized in 1.76. Do not lint this
61
- let _ = val as *const i32;
62
- let _ = mut_val as *mut i32;
67
+ f( val as *const i32) ;
68
+ f( mut_val as *mut i32) ;
63
69
}
64
70
65
71
#[clippy::msrv = "1.76"]
66
72
fn _msrv_1_76() {
67
73
let val = &42_i32;
68
74
let mut_val = &mut 42_i32;
69
75
70
- let _ = std::ptr::from_ref::<i32>(val);
71
- let _ = std::ptr::from_mut::<i32>(mut_val);
76
+ f( std::ptr::from_ref::<i32>(val) );
77
+ f( std::ptr::from_mut::<i32>(mut_val) );
72
78
}
73
79
74
80
fn foo(val: &[u8]) {
75
- let _ = std::ptr::from_ref(val);
76
- let _ = std::ptr::from_ref::<[u8]>(val);
81
+ f( std::ptr::from_ref(val) );
82
+ f( std::ptr::from_ref::<[u8]>(val) );
77
83
}
78
84
79
85
fn bar(val: &mut str) {
80
- let _ = std::ptr::from_mut(val);
81
- let _ = std::ptr::from_mut::<str>(val);
86
+ f( std::ptr::from_mut(val) );
87
+ f( std::ptr::from_mut::<str>(val) );
82
88
}
83
89
84
90
struct X<'a>(&'a i32);
0 commit comments