chibihash 0.2.0

A Rust implementation of the ChibiHash algorithm
Documentation

ChibiHash-rs

Rust port of N-R-K/ChibiHash. See the article ChibiHash: A small, fast 64-bit hash function for more information.

See the original repository for more information, especially for when not to use ChibiHash.

All credit for the algorithm goes to N-R-K.

Features

  • 64-bit hash function
  • Deterministic
  • Fast
  • No dependencies
  • Three ways to use ChibiHash:
    1. Direct Hashing: One-shot hashing using chibi_hash64()
    2. Simple Hasher: Basic implementation using ChibiHasher (implements std::hash::Hasher)
    3. Streaming Hasher: Memory-efficient streaming with StreamingChibiHasher (implements std::hash::Hasher)

Example

use chibihash::{chibi_hash64, ChibiHasher, StreamingChibiHasher};
use std::hash::Hasher;

fn main() {
    // Method 1: Direct hashing
    let hash = chibi_hash64(b"yellow world", 42);
    println!("Direct hash: {:016x}", hash);

    // Method 2: Using Hasher trait
    let mut hasher = ChibiHasher::new(42);
    hasher.write(b"yellow world");
    println!("Hasher trait: {:016x}", hasher.finish());

    // Method 3: Streaming hashing
    let mut hasher = StreamingChibiHasher::new(0);
    hasher.update(b"yellow ");
    hasher.update(b"world");
    println!("Streaming: {:016x}", hasher.finalize());
}

Tests

Run cargo test to see the tests.

Benchmarks

Run cargo bench to see the benchmarks. See target/criterion/report/index.html for the HTML report.

License

MIT