Files
go-cuckoo/hash.go
M.V. Hutz 395a3560c7 refactor: constructors, update docs
- NewCustomTable -> NewCustom
- NewTableBy -> NewBy
- NewTable -> New
2026-04-04 12:27:53 +02:00

28 lines
835 B
Go

package cuckoo
import (
"hash/maphash"
)
// A Hash function maps any data to a fixed-length value (in this case, a
// [uint64]).
//
// It is used by the [HashTable] to evenly distribute values
// amongst its slots. A good hash function is uniform, [chaotic], and
// deterministic. [HashTable] uses [NewDefaultHash] by default, which is built on
// [maphash.Comparable].
//
// [chaotic]: https://en.wikipedia.org/wiki/Avalanche_effect
type Hash[K any] = func(key K) (digest uint64)
// NewDefaultHash returns a new [Hash] which uses [maphash.Comparable].
//
// Each hash has a random seed, so calling this function again will return a new
// hash. Do not use this for testing.
func NewDefaultHash[K comparable]() Hash[K] {
seed := maphash.MakeSeed()
return func(key K) (digest uint64) {
return maphash.Comparable(seed, key)
}
}