2 releases
0.1.2 | Apr 1, 2024 |
---|---|
0.1.1 |
|
0.1.0 | Jan 14, 2024 |
#1131 in Algorithms
69 downloads per month
100KB
2.5K
SLoC
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 standardalloc
crate.std
: Enable trait implementations for the standardstd
crate. Impliesalloc
.
Optional integrations:
bnum
: ImplementHash
for thebnum
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.
Dependencies
~0.3–0.8MB
~20K SLoC