1 #![allow(dead_code, clippy::borrow_as_ptr)]
5 use std
::mem
::transmute
as my_transmute
;
6 use std
::vec
::Vec
as MyVec
;
12 fn my_vec() -> MyVec
<i32> {
16 #[allow(clippy::needless_lifetimes, clippy::transmute_ptr_to_ptr)]
17 #[warn(clippy::useless_transmute)]
18 unsafe fn _generic
<'a
, T
, U
: 'a
>(t
: &'a T
) {
20 // let _: &'a T = core::intrinsics::transmute(t);
22 let _
: &'a U
= core
::intrinsics
::transmute(t
);
24 let _
: *const T
= core
::intrinsics
::transmute(t
);
26 let _
: *mut T
= core
::intrinsics
::transmute(t
);
28 let _
: *const U
= core
::intrinsics
::transmute(t
);
31 #[warn(clippy::useless_transmute)]
34 let _
: Vec
<i32> = core
::intrinsics
::transmute(my_vec());
36 let _
: Vec
<i32> = core
::mem
::transmute(my_vec());
38 let _
: Vec
<i32> = std
::intrinsics
::transmute(my_vec());
40 let _
: Vec
<i32> = std
::mem
::transmute(my_vec());
42 let _
: Vec
<i32> = my_transmute(my_vec());
44 let _
: *const usize = std
::mem
::transmute(5_isize
);
46 let _
= 5_isize
as *const usize;
48 let _
: *const usize = std
::mem
::transmute(1 + 1usize
);
50 let _
= (1 + 1_usize
) as *const usize;
53 unsafe fn _f
<'a
, 'b
>(x
: &'a
u32) -> &'b
u32 {
54 std
::mem
::transmute(x
)
57 unsafe fn _f2
<'a
, 'b
>(x
: *const (dyn Iterator
<Item
= u32> + 'a
)) -> *const (dyn Iterator
<Item
= u32> + 'b
) {
58 std
::mem
::transmute(x
)
61 unsafe fn _f3
<'a
, 'b
>(x
: fn(&'a
u32)) -> fn(&'b
u32) {
62 std
::mem
::transmute(x
)
65 unsafe fn _f4
<'a
, 'b
>(x
: std
::borrow
::Cow
<'a
, str>) -> std
::borrow
::Cow
<'b
, str> {
66 std
::mem
::transmute(x
)
72 #[warn(clippy::crosspointer_transmute)]
74 let mut int
: Usize
= Usize(0);
75 let int_const_ptr
: *const Usize
= &int
as *const Usize
;
76 let int_mut_ptr
: *mut Usize
= &mut int
as *mut Usize
;
79 let _
: Usize
= core
::intrinsics
::transmute(int_const_ptr
);
81 let _
: Usize
= core
::intrinsics
::transmute(int_mut_ptr
);
83 let _
: *const Usize
= core
::intrinsics
::transmute(my_int());
85 let _
: *mut Usize
= core
::intrinsics
::transmute(my_int());
89 #[warn(clippy::transmute_int_to_char)]
91 let _
: char = unsafe { std::mem::transmute(0_u32) }
;
92 let _
: char = unsafe { std::mem::transmute(0_i32) }
;
94 // These shouldn't warn
95 const _
: char = unsafe { std::mem::transmute(0_u32) }
;
96 const _
: char = unsafe { std::mem::transmute(0_i32) }
;
99 #[warn(clippy::transmute_int_to_bool)]
101 let _
: bool
= unsafe { std::mem::transmute(0_u8) }
;
104 #[warn(clippy::transmute_int_to_float)]
107 let _
: f32 = unsafe { std::mem::transmute(0_u32) }
;
108 let _
: f32 = unsafe { std::mem::transmute(0_i32) }
;
109 let _
: f64 = unsafe { std::mem::transmute(0_u64) }
;
110 let _
: f64 = unsafe { std::mem::transmute(0_i64) }
;
114 const VALUE32
: f32 = unsafe { std::mem::transmute(0_u32) }
;
115 const VALUE64
: f64 = unsafe { std::mem::transmute(0_i64) }
;
117 const fn from_bits_32(v
: i32) -> f32 {
118 unsafe { std::mem::transmute(v) }
121 const fn from_bits_64(v
: u64) -> f64 {
122 unsafe { std::mem::transmute(v) }
130 let _
: [u8; 1] = std
::mem
::transmute(0u8);
131 let _
: [u8; 4] = std
::mem
::transmute(0u32);
132 let _
: [u8; 16] = std
::mem
::transmute(0u128);
133 let _
: [u8; 1] = std
::mem
::transmute(0i8);
134 let _
: [u8; 4] = std
::mem
::transmute(0i32);
135 let _
: [u8; 16] = std
::mem
::transmute(0i128);
136 let _
: [u8; 4] = std
::mem
::transmute(0.0f32);
137 let _
: [u8; 8] = std
::mem
::transmute(0.0f64);
140 const fn test_const() {
142 let _
: [u8; 1] = std
::mem
::transmute(0u8);
143 let _
: [u8; 4] = std
::mem
::transmute(0u32);
144 let _
: [u8; 16] = std
::mem
::transmute(0u128);
145 let _
: [u8; 1] = std
::mem
::transmute(0i8);
146 let _
: [u8; 4] = std
::mem
::transmute(0i32);
147 let _
: [u8; 16] = std
::mem
::transmute(0i128);
148 let _
: [u8; 4] = std
::mem
::transmute(0.0f32);
149 let _
: [u8; 8] = std
::mem
::transmute(0.0f64);
154 fn bytes_to_str(mb
: &mut [u8]) {
155 const B
: &[u8] = b
"";
157 let _
: &str = unsafe { std::mem::transmute(B) }
;
158 let _
: &mut str = unsafe { std::mem::transmute(mb) }
;
159 const _
: &str = unsafe { std::mem::transmute(B) }
;