Files
spellbook/examples/check.rs
2025-07-09 23:05:10 -04:00

53 lines
1.3 KiB
Rust

/*
Most basic example for the checker for quick debugging.
## Usage
```
$ cargo run --example check hello
Compiled the dictionary in 113ms
"hello" is in the dictionary (checked in 3µs)
$ cargo run --example check helol
Compiled the dictionary in 110ms
"helol" is NOT in the dictionary (checked in 21µs)
```
*/
use std::time::Instant;
use spellbook::Dictionary;
const EN_US_AFF: &str = include_str!("../vendor/en_US/en_US.aff");
const EN_US_DIC: &str = include_str!("../vendor/en_US/en_US.dic");
fn main() {
let mut args = std::env::args().skip(1);
let word = match args.next() {
Some(arg) => arg,
None => {
eprintln!("Usage: check WORD");
std::process::exit(1);
}
};
let now = Instant::now();
let dict = Dictionary::new(EN_US_AFF, EN_US_DIC).unwrap();
println!("Compiled the dictionary in {:?}", now.elapsed());
let (size, subtries) = dict.estimated_size();
println!("Estimated dictionary size: {size} (subtries: {subtries})");
let now = Instant::now();
if dict.check(&word) {
println!(
"\"{word}\" is in the dictionary (checked in {:?})",
now.elapsed()
);
} else {
eprintln!(
"\"{word}\" is NOT in the dictionary (checked in {:?})",
now.elapsed()
);
std::process::exit(1);
}
}