31 lines
781 B
Rust
31 lines
781 B
Rust
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);
|
|
}
|
|
return v
|
|
}
|
|
|
|
mod imp {
|
|
use libc;
|
|
use crate::io;
|
|
|
|
extern "C" {
|
|
fn randBytes (randBuf: *mut libc::c_uchar,
|
|
numOfBytes: libc::c_int) -> libc::c_int;
|
|
}
|
|
|
|
pub fn fill_bytes(v: &mut [u8]) {
|
|
let ret = unsafe {
|
|
randBytes(v.as_mut_ptr() as *mut libc::c_uchar, v.len() as libc::c_int)
|
|
};
|
|
if ret == -1 {
|
|
panic!("couldn't generate random bytes: {}", io::Error::last_os_error());
|
|
}
|
|
}
|
|
}
|