AggregateSearcher should keep order of searchers

This commit is contained in:
Adrian Malacoda 2017-03-12 18:52:39 -05:00
parent 552287bc94
commit 4706cb4460
3 changed files with 5 additions and 3 deletions

View File

@ -18,3 +18,4 @@ hyper = "0.9.18"
serde_json = "0.9" serde_json = "0.9"
retry = { git = "https://github.com/jimmycuadra/retry", rev = "3fa812e650d64ede61ea243fb83ef1a222ff0f84" } retry = { git = "https://github.com/jimmycuadra/retry", rev = "3fa812e650d64ede61ea243fb83ef1a222ff0f84" }
mopa = "0.2.2" mopa = "0.2.2"
linked-hash-map = "0.4.1"

View File

@ -2,6 +2,7 @@ extern crate hyper;
extern crate select; extern crate select;
extern crate serde_json; extern crate serde_json;
extern crate retry; extern crate retry;
extern crate linked_hash_map;
#[macro_use] #[macro_use]
extern crate mopa; extern crate mopa;

View File

@ -3,7 +3,7 @@ pub mod yugioh;
pub mod mediawiki; pub mod mediawiki;
use Link; use Link;
use std::collections::BTreeMap; use linked_hash_map::LinkedHashMap;
pub trait Searcher<T: Link> { pub trait Searcher<T: Link> {
fn fuzzy_search (&self, name: &str) -> Option<T> { fn fuzzy_search (&self, name: &str) -> Option<T> {
@ -15,13 +15,13 @@ pub trait Searcher<T: Link> {
type SearchFn = Box<Fn(String, bool) -> Option<Box<Link>>>; type SearchFn = Box<Fn(String, bool) -> Option<Box<Link>>>;
pub struct AggregateSearcher { pub struct AggregateSearcher {
searchers: BTreeMap<String, SearchFn> searchers: LinkedHashMap<String, SearchFn>
} }
impl AggregateSearcher { impl AggregateSearcher {
pub fn new () -> AggregateSearcher { pub fn new () -> AggregateSearcher {
AggregateSearcher { AggregateSearcher {
searchers: BTreeMap::new() searchers: LinkedHashMap::new()
} }
} }