11#![ warn( clippy:: ref_as_ptr) ]
22#![ allow( clippy:: unnecessary_mut_passed) ]
33
4+ fn f < T > ( _: T ) { }
5+
46fn 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 ) ) ;
810
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 ) ;
1113
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 ) ) ;
1517
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 ) ;
1820
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 ) ) ;
2224
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 ) ;
2527
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 ) ) ;
2931
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 ) ;
3234
3335 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) ) ;
3638
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 ) ;
3941
4042 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) ) ;
4348
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 _ ) ;
4651
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) ) ) ;
4955
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 _ ;
5359}
5460
5561#[ clippy:: msrv = "1.75" ]
@@ -58,27 +64,27 @@ fn _msrv_1_75() {
5864 let mut_val = & mut 42_i32 ;
5965
6066 // `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 ) ;
6369}
6470
6571#[ clippy:: msrv = "1.76" ]
6672fn _msrv_1_76 ( ) {
6773 let val = & 42_i32 ;
6874 let mut_val = & mut 42_i32 ;
6975
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) ) ;
7278}
7379
7480fn 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) ) ;
7783}
7884
7985fn 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) ) ;
8288}
8389
8490struct X < ' a > ( & ' a i32 ) ;
0 commit comments