Expand description
Rust-PHF is a library to generate efficient lookup tables at compile time using perfect hash functions.
It currently uses the
CHD algorithm by default and
also ships an experimental ptrhash feature for an alternative MPHF layout.
MSRV (minimum supported rust version) is Rust 1.85.
§Usage
PHF data structures can be constructed via either the procedural
macros in the phf_macros crate or code generation supported by the
phf_codegen crate. If you prefer macros, you can easily use them by
enabling the macros feature of the phf crate, like:
[dependencies]
phf = { version = "0.14.0", features = ["macros"] }To try the experimental MPHF alternative instead of the default CHD layout,
enable the ptrhash feature on every phf crate involved in generation and
runtime lookup:
[dependencies]
phf = { version = "0.14.0", features = ["macros", "ptrhash"] }To compile the phf crate with a dependency on
libcore instead of libstd, enabling use in environments where libstd
will not work, set default-features = false for the dependency:
[dependencies]
# to use `phf` in `no_std` environments
phf = { version = "0.14.0", default-features = false }§Example (with the macros feature enabled)
use phf::phf_map;
#[derive(Clone)]
pub enum Keyword {
Loop,
Continue,
Break,
Fn,
Extern,
}
static KEYWORDS: phf::Map<&'static str, Keyword> = phf_map! {
"loop" => Keyword::Loop,
"continue" => Keyword::Continue,
"break" => Keyword::Break,
"fn" => Keyword::Fn,
"extern" => Keyword::Extern,
};
pub fn parse_keyword(keyword: &str) -> Option<Keyword> {
KEYWORDS.get(keyword).cloned()
}Alternatively, you can use the phf_codegen crate to generate PHF datatypes
in a build script.
§Note
Currently, the macro syntax has some limitations and may not work as you want. See #196 for example.
Modules§
- map
- An immutable map constructed at compile time.
- ordered_
map - An order-preserving immutable map constructed at compile time.
- ordered_
set - An order-preserving immutable set constructed at compile time.
- set
- An immutable set constructed at compile time.
Macros§
- phf_map
- Macro to create a
static(compile-time)Map. - phf_
ordered_ map - Macro to create a
static(compile-time)OrderedMap. - phf_
ordered_ set - Macro to create a
static(compile-time)OrderedSet. - phf_set
- Macro to create a
static(compile-time)Set.
Structs§
- Map
- An immutable map constructed at compile time.
- Ordered
Map - An order-preserving immutable map constructed at compile time.
- Ordered
Set - An order-preserving immutable set constructed at compile time.
- Set
- An immutable set constructed at compile time.