hash.rs 367 B

12345678910111213141516171819
  1. use core::hash::Hasher;
  2. #[derive(Default)]
  3. pub struct KernelHasher {
  4. cur: u64,
  5. }
  6. impl Hasher for KernelHasher {
  7. fn finish(&self) -> u64 {
  8. self.cur
  9. }
  10. fn write(&mut self, bytes: &[u8]) {
  11. const SEED: u64 = 131;
  12. for &byte in bytes {
  13. self.cur = self.cur.wrapping_mul(SEED).wrapping_add(byte as u64)
  14. }
  15. }
  16. }