Replace pointer casting in hashmap_random_keys with safe code

The old code was unnecessarily unsafe and relied on the layout
of tuples always being the same as an array of the same size.
This commit is contained in:
BlackHoleFox 2022-08-08 18:49:12 -07:00
parent f03ce30962
commit 0cf9503751
1 changed files with 9 additions and 9 deletions

View File

@ -1,13 +1,13 @@
use crate::mem;
use crate::slice;
pub fn hashmap_random_keys() -> (u64, u64) {
let mut v = (0, 0);
unsafe {
let view = slice::from_raw_parts_mut(&mut v as *mut _ as *mut u8, mem::size_of_val(&v));
imp::fill_bytes(view);
}
v
const KEY_LEN: usize = core::mem::size_of::<u64>();
let mut v = [0u8; KEY_LEN * 2];
imp::fill_bytes(&mut v);
let key1 = v[0..KEY_LEN].try_into().unwrap();
let key2 = v[KEY_LEN..].try_into().unwrap();
(u64::from_ne_bytes(key1), u64::from_ne_bytes(key2))
}
#[cfg(all(