restor 2.0.2

A dynamic resource storage system in rust.
Documentation
use std::hash::{BuildHasher, Hasher};

#[derive(Clone, Copy, Default)]
pub struct PassthroughHasherBuilder;

#[derive(Clone, Copy)]
pub struct PassthroughHasher(u64);

impl BuildHasher for PassthroughHasherBuilder {
    type Hasher = PassthroughHasher;
    #[inline(always)]
    fn build_hasher(&self) -> PassthroughHasher {
        PassthroughHasher(0)
    }
}

impl Hasher for PassthroughHasher {
    #[inline(always)]
    fn finish(&self) -> u64 {
        self.0
    }
    #[inline(always)]
    fn write(&mut self, bytes: &[u8]) {
        assert!(bytes.len() >= 8);
        unsafe {
            self.0 = *(bytes.as_ptr() as *const u64);
        }
    }
}

#[cfg(test)]
mod tests {
    use crate::black_box::hasher::PassthroughHasherBuilder;
    use std::hash::{BuildHasher, Hash, Hasher};

    #[test]
    pub fn passthrough_hasher() {
        for i in 0u64..0xffffu64 {
            let mut hasher = PassthroughHasherBuilder.build_hasher();
            i.hash(&mut hasher);
            assert_eq!(hasher.finish(), i);
        }
    }
}