Module type Trie.Key

Key requirements. Key is a sequence of tokens of the specified length. It is better to use contiguous data structures, like arrays as keys, otherwise you can end up with a slow implementation (i.e., don't use lists or sequences as keys, use strings, bitstrings, arrays, etc).

type t

the type of key

type token

type of token must implement bin_prot, be comparable and sexpable

val bin_shape_token : Core_kernel.Bin_prot.Shape.t
val bin_size_token : token Core_kernel.Bin_prot.Size.sizer
val bin_write_token : token Core_kernel.Bin_prot.Write.writer
val bin_writer_token : token Core_kernel.Bin_prot.Type_class.writer
val bin_read_token : token Core_kernel.Bin_prot.Read.reader
val __bin_read_token__ : (int -> token) Core_kernel.Bin_prot.Read.reader
val bin_reader_token : token Core_kernel.Bin_prot.Type_class.reader
val bin_token : token Core_kernel.Bin_prot.Type_class.t
val compare_token : token -> token -> int
val sexp_of_token : token -> Ppx_sexp_conv_lib.Sexp.t
val token_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> token
val length : t -> int

length key return the amount of tokens in a key

val nth_token : t -> int -> token

nth_token key n the n'th token of key. Should be O(1)

val token_hash : token -> int

hash_token tok efficient hash function for the token type. If nothing efficient came to mind, just use Hashtbl.hash.