use std::hash::{Hash, Hasher};
pub type NanoTime = Box<dyn Fn(i64) -> i64>;
pub type CPUTicks = Box<dyn Fn(i64) -> i64>;
pub type Memhash = Box<dyn Fn(*const str, *const usize, *const usize) -> u64>;
unsafe fn any_as_u8_slice<T: Sized>(p: &T) -> &[u8] {
::std::slice::from_raw_parts(
(p as *const T) as *const u8,
::std::mem::size_of::<T>(),
)
}
#[repr(C)]
pub struct StringStruct([u8; 32]);
impl Hash for StringStruct {
fn hash<H: Hasher>(&self, state: &mut H) {
self.0.hash(state)
}
}
pub fn mem_hash(data: &[u8]) -> u64 {
let hash = seahash::hash(data);
hash
}
pub fn mem_hash_byte(data: &[u8]) -> u64 {
let hash = seahash::hash(data);
hash
}