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
}
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,
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;
}
// 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() {
// 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.
//
(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;
}
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;
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)