Skip to content

Commit 76b11cd

Browse files
vlad20012mbrubeck
authored andcommitted
Replace unsafe transmute to a cast
`unsafe { mem::transmute::<i16, u16>(exp) } as u64` is equivalent to `exp as u16 as u64`, this can be verified with a simple program: ```rust fn main() { for i in i16::MIN ..= i16::MAX { assert_eq!( unsafe { std::mem::transmute::<i16, u16>(i) } as u64, i as u16 as u64 ) } } ```
1 parent bfabcc9 commit 76b11cd

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use core::fmt;
1616
use core::hash::{Hash, Hasher};
1717
use core::hint::unreachable_unchecked;
1818
use core::iter::{Product, Sum};
19-
use core::mem;
2019
use core::num::FpCategory;
2120
use core::ops::{
2221
Add, AddAssign, Deref, DerefMut, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub,
@@ -1259,7 +1258,7 @@ fn raw_double_bits<F: Float>(f: &F) -> u64 {
12591258
return CANONICAL_ZERO_BITS;
12601259
}
12611260

1262-
let exp_u64 = unsafe { mem::transmute::<i16, u16>(exp) } as u64;
1261+
let exp_u64 = exp as u16 as u64;
12631262
let sign_u64 = if sign > 0 { 1u64 } else { 0u64 };
12641263
(man & MAN_MASK) | ((exp_u64 << 52) & EXP_MASK) | ((sign_u64 << 63) & SIGN_MASK)
12651264
}

0 commit comments

Comments
 (0)