11mod  crosspointer_transmute; 
22mod  eager_transmute; 
33mod  missing_transmute_annotations; 
4- mod  transmute_float_to_int; 
54mod  transmute_int_to_bool; 
6- mod  transmute_int_to_char; 
7- mod  transmute_int_to_float; 
85mod  transmute_int_to_non_zero; 
96mod  transmute_null_to_fn; 
10- mod  transmute_num_to_bytes; 
117mod  transmute_ptr_to_ptr; 
128mod  transmute_ptr_to_ref; 
139mod  transmute_ref_to_ref; 
@@ -141,40 +137,6 @@ declare_clippy_lint! {
141137    "transmutes from a pointer to a reference type" 
142138} 
143139
144- declare_clippy_lint !  { 
145-     /// ### What it does 
146- /// Checks for transmutes from an integer to a `char`. 
147- /// 
148- /// ### Why is this bad? 
149- /// Not every integer is a Unicode scalar value. 
150- /// 
151- /// ### Known problems 
152- /// - [`from_u32`] which this lint suggests using is slower than `transmute` 
153- /// as it needs to validate the input. 
154- /// If you are certain that the input is always a valid Unicode scalar value, 
155- /// use [`from_u32_unchecked`] which is as fast as `transmute` 
156- /// but has a semantically meaningful name. 
157- /// - You might want to handle `None` returned from [`from_u32`] instead of calling `unwrap`. 
158- /// 
159- /// [`from_u32`]: https://doc.rust-lang.org/std/char/fn.from_u32.html 
160- /// [`from_u32_unchecked`]: https://doc.rust-lang.org/std/char/fn.from_u32_unchecked.html 
161- /// 
162- /// ### Example 
163- /// ```no_run 
164- /// let x = 1_u32; 
165- /// unsafe { 
166- ///     let _: char = std::mem::transmute(x); // where x: u32 
167- /// } 
168- /// 
169- /// // should be: 
170- /// let _ = std::char::from_u32(x).unwrap(); 
171- /// ``` 
172- [ clippy:: version = "pre 1.29.0" ] 
173-     pub  TRANSMUTE_INT_TO_CHAR , 
174-     complexity, 
175-     "transmutes from an integer to a `char`" 
176- } 
177- 
178140declare_clippy_lint !  { 
179141    /// ### What it does 
180142/// Checks for transmutes from a `&[u8]` to a `&str`. 
@@ -232,29 +194,6 @@ declare_clippy_lint! {
232194    "transmutes from an integer to a `bool`" 
233195} 
234196
235- declare_clippy_lint !  { 
236-     /// ### What it does 
237- /// Checks for transmutes from an integer to a float. 
238- /// 
239- /// ### Why is this bad? 
240- /// Transmutes are dangerous and error-prone, whereas `from_bits` is intuitive 
241- /// and safe. 
242- /// 
243- /// ### Example 
244- /// ```no_run 
245- /// unsafe { 
246- ///     let _: f32 = std::mem::transmute(1_u32); // where x: u32 
247- /// } 
248- /// 
249- /// // should be: 
250- /// let _: f32 = f32::from_bits(1_u32); 
251- /// ``` 
252- [ clippy:: version = "pre 1.29.0" ] 
253-     pub  TRANSMUTE_INT_TO_FLOAT , 
254-     complexity, 
255-     "transmutes from an integer to a float" 
256- } 
257- 
258197declare_clippy_lint !  { 
259198    /// ### What it does 
260199/// Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked` 
@@ -280,52 +219,6 @@ declare_clippy_lint! {
280219    "transmutes from an integer to a non-zero wrapper" 
281220} 
282221
283- declare_clippy_lint !  { 
284-     /// ### What it does 
285- /// Checks for transmutes from a float to an integer. 
286- /// 
287- /// ### Why is this bad? 
288- /// Transmutes are dangerous and error-prone, whereas `to_bits` is intuitive 
289- /// and safe. 
290- /// 
291- /// ### Example 
292- /// ```no_run 
293- /// unsafe { 
294- ///     let _: u32 = std::mem::transmute(1f32); 
295- /// } 
296- /// 
297- /// // should be: 
298- /// let _: u32 = 1f32.to_bits(); 
299- /// ``` 
300- [ clippy:: version = "1.41.0" ] 
301-     pub  TRANSMUTE_FLOAT_TO_INT , 
302-     complexity, 
303-     "transmutes from a float to an integer" 
304- } 
305- 
306- declare_clippy_lint !  { 
307-     /// ### What it does 
308- /// Checks for transmutes from a number to an array of `u8` 
309- /// 
310- /// ### Why this is bad? 
311- /// Transmutes are dangerous and error-prone, whereas `to_ne_bytes` 
312- /// is intuitive and safe. 
313- /// 
314- /// ### Example 
315- /// ```no_run 
316- /// unsafe { 
317- ///     let x: [u8; 8] = std::mem::transmute(1i64); 
318- /// } 
319- /// 
320- /// // should be 
321- /// let x: [u8; 8] = 0i64.to_ne_bytes(); 
322- /// ``` 
323- [ clippy:: version = "1.58.0" ] 
324-     pub  TRANSMUTE_NUM_TO_BYTES , 
325-     complexity, 
326-     "transmutes from a number to an array of `u8`" 
327- } 
328- 
329222declare_clippy_lint !  { 
330223    /// ### What it does 
331224/// Checks for transmutes from a pointer to a pointer, or 
@@ -581,13 +474,9 @@ impl_lint_pass!(Transmute => [
581474    TRANSMUTE_PTR_TO_PTR , 
582475    USELESS_TRANSMUTE , 
583476    WRONG_TRANSMUTE , 
584-     TRANSMUTE_INT_TO_CHAR , 
585477    TRANSMUTE_BYTES_TO_STR , 
586478    TRANSMUTE_INT_TO_BOOL , 
587-     TRANSMUTE_INT_TO_FLOAT , 
588479    TRANSMUTE_INT_TO_NON_ZERO , 
589-     TRANSMUTE_FLOAT_TO_INT , 
590-     TRANSMUTE_NUM_TO_BYTES , 
591480    UNSOUND_COLLECTION_TRANSMUTE , 
592481    TRANSMUTES_EXPRESSIBLE_AS_PTR_CASTS , 
593482    TRANSMUTE_UNDEFINED_REPR , 
@@ -632,14 +521,10 @@ impl<'tcx> LateLintPass<'tcx> for Transmute {
632521                | transmute_null_to_fn:: check ( cx,  e,  arg,  to_ty) 
633522                | transmute_ptr_to_ref:: check ( cx,  e,  from_ty,  to_ty,  arg,  path,  self . msrv ) 
634523                | missing_transmute_annotations:: check ( cx,  path,  from_ty,  to_ty,  e. hir_id ) 
635-                 | transmute_int_to_char:: check ( cx,  e,  from_ty,  to_ty,  arg,  const_context) 
636524                | transmute_ref_to_ref:: check ( cx,  e,  from_ty,  to_ty,  arg,  const_context) 
637525                | transmute_ptr_to_ptr:: check ( cx,  e,  from_ty,  to_ty,  arg,  self . msrv ) 
638526                | transmute_int_to_bool:: check ( cx,  e,  from_ty,  to_ty,  arg) 
639-                 | transmute_int_to_float:: check ( cx,  e,  from_ty,  to_ty,  arg,  const_context,  self . msrv ) 
640527                | transmute_int_to_non_zero:: check ( cx,  e,  from_ty,  to_ty,  arg) 
641-                 | transmute_float_to_int:: check ( cx,  e,  from_ty,  to_ty,  arg,  const_context,  self . msrv ) 
642-                 | transmute_num_to_bytes:: check ( cx,  e,  from_ty,  to_ty,  arg,  const_context,  self . msrv ) 
643528                | ( unsound_collection_transmute:: check ( cx,  e,  from_ty,  to_ty) 
644529                    || transmute_undefined_repr:: check ( cx,  e,  from_ty,  to_ty) ) 
645530                | ( eager_transmute:: check ( cx,  e,  arg,  from_ty,  to_ty) ) ; 
0 commit comments