Skip to content

Commit de6fc1b

Browse files
committed
simplify query building
1 parent 383009b commit de6fc1b

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

src/web/releases.rs

+4-9
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ impl_webpage! {
545545

546546
pub fn search_handler(req: &mut Request) -> IronResult<Response> {
547547
let url = req.url.as_ref();
548-
let params: HashMap<_, _> = url.query_pairs().collect();
548+
let mut params: HashMap<_, _> = url.query_pairs().collect();
549549
let query = params
550550
.get("query")
551551
.map(|q| q.to_string())
@@ -555,7 +555,7 @@ pub fn search_handler(req: &mut Request) -> IronResult<Response> {
555555

556556
// check if I am feeling lucky button pressed and redirect user to crate page
557557
// if there is a match. Also check for paths to items within crates.
558-
if params.contains_key("i-am-feeling-lucky") || query.contains("::") {
558+
if params.remove("i-am-feeling-lucky").is_some() || query.contains("::") {
559559
// redirect to a random crate if query is empty
560560
if query.is_empty() {
561561
return redirect_to_random_crate(req, &mut conn);
@@ -571,17 +571,12 @@ pub fn search_handler(req: &mut Request) -> IronResult<Response> {
571571
None => query.clone(),
572572
};
573573

574-
queries.extend(
575-
params
576-
.iter()
577-
.filter(|(k, _)| !matches!(k.as_ref(), "i-am-feeling-lucky" | "query"))
578-
.map(|(k, v)| (k.as_ref(), v.as_ref())),
579-
);
580-
581574
// since we never pass a version into `match_version` here, we'll never get
582575
// `MatchVersion::Exact`, so the distinction between `Exact` and `Semver` doesn't
583576
// matter
584577
if let Ok(matchver) = match_version(&mut conn, &krate, None) {
578+
params.remove("query");
579+
queries.extend(params.iter().map(|(k, v)| (k.as_ref(), v.as_ref())));
585580
let (version, _) = matchver.version.into_parts();
586581
let krate = matchver.corrected_name.unwrap_or(krate);
587582

0 commit comments

Comments
 (0)