Avoid sorting routes on every add.

This commit is contained in:
Linus Heckemann 2017-08-21 22:59:46 +01:00 committed by Sergio Benitez
parent a1193ba454
commit b4517461cf
1 changed files with 2 additions and 4 deletions

View File

@ -25,10 +25,8 @@ impl Router {
pub fn add(&mut self, route: Route) { pub fn add(&mut self, route: Route) {
let selector = route.method; let selector = route.method;
let entries = self.routes.entry(selector).or_insert_with(|| vec![]); let entries = self.routes.entry(selector).or_insert_with(|| vec![]);
// TODO: We really just want an insertion at the correct spot here, let i = entries.binary_search_by_key(&route.rank, |r| r.rank).unwrap_or_else(|i| i);
// instead of pushing to the end and _then_ sorting. entries.insert(i, route);
entries.push(route);
entries.sort_by(|a, b| a.rank.cmp(&b.rank));
} }
pub fn route<'b>(&'b self, req: &Request) -> Vec<&'b Route> { pub fn route<'b>(&'b self, req: &Request) -> Vec<&'b Route> {