Skip to main content

Crate phf

Crate phf 

Source
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.
OrderedMap
An order-preserving immutable map constructed at compile time.
OrderedSet
An order-preserving immutable set constructed at compile time.
Set
An immutable set constructed at compile time.

Traits§

PhfEq
Trait for comparing stored PHF keys with runtime lookup keys.
PhfHash
A trait implemented by types which can be used in PHF data structures.