murmur3_32 0.1.0

implementation of MurmurHash3 32bit algorithm
Documentation

murmur3_32   crate docs

Rust implementation of MurmurHash3 (32bit) non-cryptographic hash algorithm.

features

  • highly optimized
  • optional no_std support
  • Murmur3Io implements Read/Write (passthrough hasher)
  • Murmur3 implements Hasher
  • Murmur3 implements Default with seed value of 0
  • MSRV 1.86

basic usage

const SEED: u32 = 1234;
let mut hasher = murmur3_32::Murmur3::new(SEED);
hasher.write(&[1, 2, 3, 4, 5, 6]);
hasher.write(&[7, 8, 9]);

let hash = hasher.finish();
assert_eq!(hash, 3_401_546_948);

basic usage - single slice

const SEED: u32 = 1234;
let hash = murmur3_32::Murmur3::hash(SEED, &[1, 2, 3, 4, 5, 6, 7, 8, 9]);
assert_eq!(hash, 3_401_546_948);

usage as std::io::Write

use std::io::{self, Write as _};

const SEED: u32 = 1234;
let mut stdout = murmur3_32::Murmur3Io::new(SEED, io::stdout());
write!(stdout, "Hello").unwrap();
writeln!(stdout, ", World!").unwrap();

let (hash, _stdout) = stdout.finish();
assert_eq!(hash, 2_175_319_754);

usage as std::io::Read

use std::io;

const SEED: u32 = 1234;
let mut reader = murmur3_32::Murmur3Io::new(SEED, b"Hello, World!\n".as_slice());
io::copy(&mut reader, &mut io::empty()).unwrap();

let (hash, _slice) = reader.finish();
assert_eq!(hash, 2_175_319_754);

no_std usage

cargo add murmur3_32 --no-default-features

[!NOTE] Murmur3Io is unavailable in no_std context