Skip to content

Commit d3fe534

Browse files
committed
Convert sort_unstable_by_key to sort_by_cached_key
1 parent eacfb33 commit d3fe534

File tree

3 files changed

+6
-9
lines changed

3 files changed

+6
-9
lines changed

src/librustc_metadata/encoder.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,15 +1414,15 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
14141414
let mut all_impls: Vec<_> = visitor.impls.into_iter().collect();
14151415

14161416
// Bring everything into deterministic order for hashing
1417-
all_impls.sort_unstable_by_key(|&(trait_def_id, _)| {
1417+
all_impls.sort_by_cached_key(|&(trait_def_id, _)| {
14181418
tcx.def_path_hash(trait_def_id)
14191419
});
14201420

14211421
let all_impls: Vec<_> = all_impls
14221422
.into_iter()
14231423
.map(|(trait_def_id, mut impls)| {
14241424
// Bring everything into deterministic order for hashing
1425-
impls.sort_unstable_by_key(|&def_index| {
1425+
impls.sort_by_cached_key(|&def_index| {
14261426
tcx.hir.definitions().def_path_hash(def_index)
14271427
});
14281428

src/librustc_metadata/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#![feature(macro_lifetime_matcher)]
2222
#![feature(quote)]
2323
#![feature(rustc_diagnostic_macros)]
24+
#![feature(slice_sort_by_cached_key)]
2425
#![feature(specialization)]
2526
#![feature(rustc_private)]
2627

src/librustc_resolve/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,13 +1151,9 @@ impl<'a> ModuleData<'a> {
11511151

11521152
fn for_each_child_stable<F: FnMut(Ident, Namespace, &'a NameBinding<'a>)>(&self, mut f: F) {
11531153
let resolutions = self.resolutions.borrow();
1154-
let mut resolutions = resolutions.iter().map(|(&(ident, ns), &resolution)| {
1155-
// Pre-compute keys for sorting
1156-
(ident.name.as_str(), ns, ident, resolution)
1157-
})
1158-
.collect::<Vec<_>>();
1159-
resolutions.sort_unstable_by_key(|&(str, ns, ..)| (str, ns));
1160-
for &(_, ns, ident, resolution) in resolutions.iter() {
1154+
let mut resolutions = resolutions.iter().collect::<Vec<_>>();
1155+
resolutions.sort_by_cached_key(|&(&(ident, ns), _)| (ident.name.as_str(), ns));
1156+
for &(&(ident, ns), &resolution) in resolutions.iter() {
11611157
resolution.borrow().binding.map(|binding| f(ident, ns, binding));
11621158
}
11631159
}

0 commit comments

Comments
 (0)