clean: Remove statics and use Arcs

This commit is contained in:
Kerollmops 2018-05-13 12:38:24 +02:00 committed by Clément Renault
parent a18afdc0f1
commit 1e14df00d1
7 changed files with 73 additions and 51 deletions

27
src/levenshtein.rs Normal file
View file

@ -0,0 +1,27 @@
use levenshtein_automata::{LevenshteinAutomatonBuilder, DFA};
pub struct LevBuilder {
automatons: [LevenshteinAutomatonBuilder; 3],
}
impl LevBuilder {
pub fn new() -> Self {
Self {
automatons: [
LevenshteinAutomatonBuilder::new(0, false),
LevenshteinAutomatonBuilder::new(1, false),
LevenshteinAutomatonBuilder::new(2, false),
],
}
}
pub fn build_automaton(&self, query: &str) -> DFA {
if query.len() <= 4 {
self.automatons[0].build_dfa(query)
} else if query.len() <= 8 {
self.automatons[1].build_dfa(query)
} else {
self.automatons[2].build_dfa(query)
}
}
}

View file

@ -1,12 +1,16 @@
#[macro_use] extern crate serde_derive;
extern crate bincode;
extern crate fst;
extern crate levenshtein_automata;
extern crate serde;
pub mod map;
mod levenshtein;
pub use self::map::{Map, MapBuilder, Values};
pub use self::map::{
OpBuilder, IndexedValues,
OpWithStateBuilder, IndexedValuesWithState,
};
pub use self::levenshtein::LevBuilder;