From f653bf4fba40c6415b6f580c30fbcfe2e82cce62 Mon Sep 17 00:00:00 2001 From: ljedrz Date: Wed, 25 Jul 2018 10:36:57 +0200 Subject: [PATCH] Improve readability in a few sorts --- src/librustc_driver/lib.rs | 5 +---- src/librustc_driver/profile/trace.rs | 5 ++--- src/librustc_errors/emitter.rs | 8 +++----- src/librustc_mir/monomorphize/mod.rs | 4 +--- src/librustc_mir/util/patch.rs | 2 +- src/librustc_typeck/collect.rs | 2 +- 6 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index 2100ceea228..000025c49a6 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -1229,10 +1229,7 @@ Available lint options: fn sort_lint_groups(lints: Vec<(&'static str, Vec, bool)>) -> Vec<(&'static str, Vec)> { let mut lints: Vec<_> = lints.into_iter().map(|(x, y, _)| (x, y)).collect(); - lints.sort_by(|&(x, _): &(&'static str, Vec), - &(y, _): &(&'static str, Vec)| { - x.cmp(y) - }); + lints.sort_by_key(|ref l| l.0); lints } diff --git a/src/librustc_driver/profile/trace.rs b/src/librustc_driver/profile/trace.rs index 5f10c56e8e2..4aaf5eb47f6 100644 --- a/src/librustc_driver/profile/trace.rs +++ b/src/librustc_driver/profile/trace.rs @@ -202,14 +202,13 @@ fn compute_counts_rec(counts: &mut HashMap, traces: &Vec) { use rustc::util::common::duration_to_secs_str; - use std::cmp::Ordering; + use std::cmp::Reverse; let mut data = vec![]; for (ref cons, ref qm) in counts.iter() { data.push((cons.clone(), qm.count.clone(), qm.dur_total.clone(), qm.dur_self.clone())); }; - data.sort_by(|&(_,_,_,self1),&(_,_,_,self2)| - if self1 > self2 { Ordering::Less } else { Ordering::Greater } ); + data.sort_by_key(|&k| Reverse(k.3)); for (cons, count, dur_total, dur_self) in data { write!(count_file, "{}, {}, {}, {}\n", cons, count, diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs index c9b6818d5c1..6bcf0d9eff6 100644 --- a/src/librustc_errors/emitter.rs +++ b/src/librustc_errors/emitter.rs @@ -22,7 +22,7 @@ use std::borrow::Cow; use std::io::prelude::*; use std::io; use std::collections::HashMap; -use std::cmp::min; +use std::cmp::{min, Reverse}; use termcolor::{StandardStream, ColorChoice, ColorSpec, BufferWriter}; use termcolor::{WriteColor, Color, Buffer}; use unicode_width; @@ -265,9 +265,7 @@ impl EmitterWriter { } // Find overlapping multiline annotations, put them at different depths - multiline_annotations.sort_by(|a, b| { - (a.1.line_start, a.1.line_end).cmp(&(b.1.line_start, b.1.line_end)) - }); + multiline_annotations.sort_by_key(|&(_, ref ml)| (ml.line_start, ml.line_end)); for item in multiline_annotations.clone() { let ann = item.1; for item in multiline_annotations.iter_mut() { @@ -403,7 +401,7 @@ impl EmitterWriter { // otherwise the lines would end up needing to go over a message. let mut annotations = line.annotations.clone(); - annotations.sort_by(|a,b| b.start_col.cmp(&a.start_col)); + annotations.sort_by_key(|a| Reverse(a.start_col)); // First, figure out where each label will be positioned. // diff --git a/src/librustc_mir/monomorphize/mod.rs b/src/librustc_mir/monomorphize/mod.rs index bf544e5120c..e148bc3d946 100644 --- a/src/librustc_mir/monomorphize/mod.rs +++ b/src/librustc_mir/monomorphize/mod.rs @@ -29,9 +29,7 @@ pub fn assert_symbols_are_distinct<'a, 'tcx, I>(tcx: TyCtxt<'a, 'tcx, 'tcx>, mon (mono_item, mono_item.symbol_name(tcx)) }).collect(); - (&mut symbols[..]).sort_by(|&(_, ref sym1), &(_, ref sym2)|{ - sym1.cmp(sym2) - }); + (&mut symbols[..]).sort_by_key(|&sym| sym.1); for pair in (&symbols[..]).windows(2) { let sym1 = &pair[0].1; diff --git a/src/librustc_mir/util/patch.rs b/src/librustc_mir/util/patch.rs index 21ff7eaa72d..c2a56adc18f 100644 --- a/src/librustc_mir/util/patch.rs +++ b/src/librustc_mir/util/patch.rs @@ -156,7 +156,7 @@ impl<'tcx> MirPatch<'tcx> { } let mut new_statements = self.new_statements; - new_statements.sort_by(|u,v| u.0.cmp(&v.0)); + new_statements.sort_by_key(|s| s.0); let mut delta = 0; let mut last_bb = START_BLOCK; diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 5193113d82c..60f89282551 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -1746,7 +1746,7 @@ pub fn compute_bounds<'gcx: 'tcx, 'tcx>(astconv: &dyn AstConv<'gcx, 'tcx>, astconv.ast_region_to_region(r, None) }).collect(); - trait_bounds.sort_by(|a,b| a.def_id().cmp(&b.def_id())); + trait_bounds.sort_by_key(|t| t.def_id()); let implicitly_sized = if let SizedByDefault::Yes = sized_by_default { !is_unsized(astconv, ast_bounds, span)