metrohash 1.0.1

Rust implementation of MetroHash, a high quality, high performance hash algorithm
Documentation
use std::num::Wrapping;

macro_rules! impl_read {
	($fn_name: ident, $ty: ty) => (
		#[inline(always)]
		pub fn $fn_name(ptr_addr: usize) -> Wrapping<u64> {
			let ptr: *const $ty = ptr_addr as *const $ty;
			Wrapping(unsafe { *ptr as u64 })
		}
	)
}

impl_read!(read_u64, u64);
impl_read!(read_u32, u32);
impl_read!(read_u16, u16);
impl_read!(read_u8, u8);

#[inline(always)]
pub fn rotate_right(v: Wrapping<u64>, k: u32) -> Wrapping<u64> {
    Wrapping(v.0.rotate_right(k))
}