Vulnerabilities | |||||
---|---|---|---|---|---|
Version | Suggest | Low | Medium | High | Critical |
0.11.2 | 0 | 0 | 0 | 0 | 0 |
0.11.1 | 0 | 0 | 0 | 0 | 0 |
0.11.0 | 0 | 0 | 0 | 0 | 0 |
0.10.0 | 0 | 0 | 0 | 0 | 0 |
0.9.1 | 0 | 0 | 0 | 0 | 0 |
0.9.0 | 0 | 0 | 0 | 0 | 0 |
0.8.0 | 0 | 0 | 0 | 0 | 0 |
0.7.24 | 0 | 0 | 0 | 0 | 0 |
0.7.23 | 0 | 0 | 0 | 0 | 0 |
0.7.22 | 0 | 0 | 0 | 0 | 0 |
0.7.21 | 0 | 0 | 0 | 0 | 0 |
0.7.20 | 0 | 0 | 0 | 0 | 0 |
0.7.19 | 0 | 0 | 0 | 0 | 0 |
0.7.18 | 0 | 0 | 0 | 0 | 0 |
0.7.17 | 0 | 0 | 0 | 0 | 0 |
0.7.16 | 0 | 0 | 0 | 0 | 0 |
0.7.15 | 0 | 0 | 0 | 0 | 0 |
0.7.14 | 0 | 0 | 0 | 0 | 0 |
0.7.13 | 0 | 0 | 0 | 0 | 0 |
0.7.12 | 0 | 0 | 0 | 0 | 0 |
0.7.11 | 0 | 0 | 0 | 0 | 0 |
0.7.10 | 0 | 0 | 0 | 0 | 0 |
0.7.9 | 0 | 0 | 0 | 0 | 0 |
0.7.8 | 0 | 0 | 0 | 0 | 0 |
0.7.7 | 0 | 0 | 0 | 0 | 0 |
0.7.6 | 0 | 0 | 0 | 0 | 0 |
0.7.5 | 0 | 0 | 0 | 0 | 0 |
0.7.4 | 0 | 0 | 0 | 0 | 0 |
0.7.3 | 0 | 0 | 0 | 0 | 0 |
0.7.2 | 0 | 0 | 0 | 0 | 0 |
0.7.1 | 0 | 0 | 0 | 0 | 0 |
0.7.0 | 0 | 0 | 0 | 0 | 0 |
0.6.19 | 0 | 0 | 0 | 0 | 0 |
0.6.18 | 0 | 0 | 0 | 0 | 0 |
0.6.17 | 0 | 0 | 0 | 0 | 0 |
0.6.15 | 0 | 0 | 0 | 0 | 0 |
0.6.14 | 0 | 0 | 0 | 0 | 0 |
0.6.13 | 0 | 0 | 0 | 0 | 0 |
0.6.12 | 0 | 0 | 0 | 0 | 0 |
0.6.11 | 0 | 0 | 0 | 0 | 0 |
0.6.10 | 0 | 0 | 0 | 0 | 0 |
0.11.2 - This version is safe to use because it has no known security vulnerabilities at this time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
MIT - MIT LicenseRust-PHF is a library to generate efficient lookup tables at compile time using perfect hash functions.
It currently uses the CHD algorithm and can generate a 100,000 entry map in roughly .4 seconds.
MSRV (minimum supported rust version) is Rust 1.61.
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.
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.11", default-features = false }
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()
}
[dependencies]
phf = { version = "0.11", features = ["macros"] }
Currently, the macro syntax has some limitations and may not work as you want. See #183 or #196 for example.
To use phf_codegen
on build.rs, you have to add dependencies under [build-dependencies]
:
[build-dependencies]
phf = { version = "0.11.1", default-features = false }
phf_codegen = "0.11.1"
Then put code on build.rs:
use std::env;
use std::fs::File;
use std::io::{BufWriter, Write};
use std::path::Path;
fn main() {
let path = Path::new(&env::var("OUT_DIR").unwrap()).join("codegen.rs");
let mut file = BufWriter::new(File::create(&path).unwrap());
write!(
&mut file,
"static KEYWORDS: phf::Map<&'static str, Keyword> = {}",
phf_codegen::Map::new()
.entry("loop", "Keyword::Loop")
.entry("continue", "Keyword::Continue")
.entry("break", "Keyword::Break")
.entry("fn", "Keyword::Fn")
.entry("extern", "Keyword::Extern")
.build()
)
.unwrap();
write!(&mut file, ";\n").unwrap();
}
and lib.rs:
#[derive(Clone)]
enum Keyword {
Loop,
Continue,
Break,
Fn,
Extern,
}
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
pub fn parse_keyword(keyword: &str) -> Option<Keyword> {
KEYWORDS.get(keyword).cloned()
}