Rollup merge of #52692 - ljedrz:sort_improvements, r=petrochenkov

Improve readability in a few sorts

Use `sort_by_key` where possible.
This commit is contained in:
Mark Rousskov 2018-07-26 09:18:36 -06:00 committed by GitHub
commit 55fa4c7374
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 9 additions and 17 deletions

View File

@ -1229,10 +1229,7 @@ Available lint options:
fn sort_lint_groups(lints: Vec<(&'static str, Vec<lint::LintId>, bool)>)
-> Vec<(&'static str, Vec<lint::LintId>)> {
let mut lints: Vec<_> = lints.into_iter().map(|(x, y, _)| (x, y)).collect();
lints.sort_by(|&(x, _): &(&'static str, Vec<lint::LintId>),
&(y, _): &(&'static str, Vec<lint::LintId>)| {
x.cmp(y)
});
lints.sort_by_key(|ref l| l.0);
lints
}

View File

@ -202,14 +202,13 @@ fn compute_counts_rec(counts: &mut HashMap<String,QueryMetric>, traces: &Vec<Rec
pub fn write_counts(count_file: &mut File, counts: &mut HashMap<String,QueryMetric>) {
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,

View File

@ -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.
//

View File

@ -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;

View File

@ -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;

View File

@ -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)