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