]> git.lizzy.rs Git - rust.git/commitdiff
Use sort_by_cached_key when key the function is not trivial/free
authorljedrz <ljedrz@gmail.com>
Fri, 9 Nov 2018 14:12:09 +0000 (15:12 +0100)
committerljedrz <ljedrz@gmail.com>
Tue, 27 Nov 2018 08:24:13 +0000 (09:24 +0100)
src/librustc/middle/resolve_lifetime.rs
src/librustc/traits/object_safety.rs
src/librustc_mir/monomorphize/partitioning.rs

index 6ff450508d13641a36d9de750e882e3de55c83ba..07054ee99af76fc9fc00ced43dee4da22b59997e 100644 (file)
@@ -1573,7 +1573,7 @@ fn check_uses_for_lifetimes_defined_by_scope(&mut self) {
             .collect();
 
         // ensure that we issue lints in a repeatable order
-        def_ids.sort_by_key(|&def_id| self.tcx.def_path_hash(def_id));
+        def_ids.sort_by_cached_key(|&def_id| self.tcx.def_path_hash(def_id));
 
         for def_id in def_ids {
             debug!(
index c79fa3861234f9b69e8cb632c3e09c93e99e9a12..2909daf22b3bab0933676b4df20e8854174e87c2 100644 (file)
@@ -409,7 +409,7 @@ fn object_ty_for_trait(self, trait_def_id: DefId, lifetime: ty::Region<'tcx>) ->
             .collect::<Vec<_>>();
 
         // existential predicates need to be in a specific order
-        associated_types.sort_by_key(|item| self.def_path_hash(item.def_id));
+        associated_types.sort_by_cached_key(|item| self.def_path_hash(item.def_id));
 
         let projection_predicates = associated_types.into_iter().map(|item| {
             ty::ExistentialPredicate::Projection(ty::ExistentialProjection {
index 6dba020120f848385ac0a3bcb5a1cd39f818bcd1..3a6ee6da42215b21c45f2b2f40a6c2ea245205e9 100644 (file)
@@ -985,7 +985,7 @@ fn collect_and_partition_mono_items<'a, 'tcx>(
                 output.push_str(" @@");
                 let mut empty = Vec::new();
                 let cgus = item_to_cgus.get_mut(i).unwrap_or(&mut empty);
-                cgus.as_mut_slice().sort_by_key(|&(ref name, _)| name.clone());
+                cgus.as_mut_slice().sort_by_cached_key(|&(ref name, _)| name.clone());
                 cgus.dedup();
                 for &(ref cgu_name, (linkage, _)) in cgus.iter() {
                     output.push_str(" ");