anyhash 0.1.2

Traits and utilities for making hashes of any type
Documentation

Traits and utilities for making hashes of any type

This crate provides the [Hash], [Hasher] and [BuildHasher] traits, which are almost exactly like their counterparts in core/std, except that [Hasher] and [BuildHasher] are generic over the type of the hash, and [Hash] can be used with any type of hash. A derive macro for [Hash] is available.

The [Hash] trait uses the [HasherWrite] trait for hashing, which has all the write methods you're familiar with from Hasher in core except for the finish method, because [Hash] doesn't know the type of the hash.

Hashing algorithms implement the [Hasher] and [HasherWrite] traits. [Hasher] is generic over the type of the hash and only contains the finish method. It depends on [HasherWrite], so you can use it just like Hasher from core.

This crate also provides tools for working with endian independent hashes, and a few hasher implementations.

Features

The crate is no_std and doesn't enable any features by default. The following features are available:

  • alloc: Enable trait implementations for the standard alloc crate.
  • std: Enable trait implementations for the standard std crate. Implies alloc.

Optional integrations:

  • bnum: Implement [Hash] for the bnum crate's types, and add support for using them as the hash type for the built-in hashers that can use them.

Built-in hashers:

  • fnv: Hashers using the Fnv1 and Fnv1a algorithms.
  • spooky: Hashers using the SpookyHash algorithm. V1 and V2 are available.
  • xxh64: Hasher using the Xxh64 algorithm.