]> git.proxmox.com Git - cargo.git/commitdiff
most sorts can be unstable
authorEh2406 <YeomanYaacov@gmail.com>
Mon, 16 Jul 2018 20:23:48 +0000 (16:23 -0400)
committerEh2406 <YeomanYaacov@gmail.com>
Mon, 16 Jul 2018 20:57:38 +0000 (16:57 -0400)
src/cargo/core/resolver/mod.rs
src/cargo/core/resolver/resolve.rs
src/cargo/ops/cargo_install.rs
src/cargo/ops/cargo_package.rs
src/cargo/sources/path.rs
src/cargo/util/rustc.rs
tests/testsuite/out_dir.rs

index 37ddf9691effd716cbc0910d39f0b5ca7e0b4ac9..1b92b21c2eca777b3c583798095aa2d0c6206105 100644 (file)
@@ -1021,7 +1021,8 @@ fn check_cycles(resolve: &Resolve, activations: &Activations) -> CargoResult<()>
         .collect();
 
     // Sort packages to produce user friendly deterministic errors.
-    let all_packages = resolve.iter().collect::<BinaryHeap<_>>().into_sorted_vec();
+    let mut all_packages: Vec<_> = resolve.iter().collect();
+    all_packages.sort_unstable();
     let mut checked = HashSet::new();
     for pkg in all_packages {
         if !checked.contains(pkg) {
index 728f693bf2a685fd3eee972f9a0fa26c2d1674a2..3b3fb20e1647a3694b56968e329bbaf614900de9 100644 (file)
@@ -193,7 +193,7 @@ unable to verify that `{0}` is the same as when the lockfile was generated
 
     pub fn features_sorted(&self, pkg: &PackageId) -> Vec<&str> {
         let mut v = Vec::from_iter(self.features(pkg).iter().map(|s| s.as_ref()));
-        v.sort();
+        v.sort_unstable();
         v
     }
 
index a1140ba02a58e3d74985e7c8735d358fa1d8c535..f533149719d003d8b5e2ac3a36ac2c8518d3a3f1 100644 (file)
@@ -538,7 +538,7 @@ where
             return Ok((pkg.clone(), Box::new(source)));
 
             fn multi_err(kind: &str, mut pkgs: Vec<&Package>) -> String {
-                pkgs.sort_by(|a, b| a.name().cmp(&b.name()));
+                pkgs.sort_unstable_by_key(|a| a.name());
                 format!(
                     "multiple packages with {} found: {}",
                     kind,
index 2b55b19d1106d91ceeea823ade4bb4d18f15be74..fb0ff6a21d3759c6a974462e4254ba17086cc0b1 100644 (file)
@@ -51,7 +51,7 @@ pub fn package(ws: &Workspace, opts: &PackageOpts) -> CargoResult<Option<FileLoc
         if include_lockfile(pkg) {
             list.push("Cargo.lock".into());
         }
-        list.sort();
+        list.sort_unstable();
         for file in list.iter() {
             println!("{}", file.display());
         }
index f058b25700f20ae580f11b81ca8da8611da69063..ff09b8f3a75b9806e080193af9dfdc1328b6ecef 100644 (file)
@@ -447,10 +447,9 @@ impl<'cfg> PathSource<'cfg> {
         // TODO: Drop collect and sort after transition period and dropping warning tests.
         // See <https://github.com/rust-lang/cargo/issues/4268>
         // and <https://github.com/rust-lang/cargo/pull/4270>
-        let mut entries: Vec<fs::DirEntry> = fs::read_dir(path)?.map(|e| e.unwrap()).collect();
-        entries.sort_by(|a, b| a.path().as_os_str().cmp(b.path().as_os_str()));
-        for entry in entries {
-            let path = entry.path();
+        let mut entries: Vec<PathBuf> = fs::read_dir(path)?.map(|e| e.unwrap().path()).collect();
+        entries.sort_unstable_by(|a, b| a.as_os_str().cmp(b.as_os_str()));
+        for path in entries {
             let name = path.file_name().and_then(|s| s.to_str());
             // Skip dotfile directories
             if name.map(|s| s.starts_with('.')) == Some(true) {
index c6de81889d9a1e907a0dc9374f0bbfbfdb403fa7..ee6737743780659693dc260755a503533135daa7 100644 (file)
@@ -239,7 +239,7 @@ fn process_fingerprint(cmd: &ProcessBuilder) -> u64 {
     let mut hasher = SipHasher::new_with_keys(0, 0);
     cmd.get_args().hash(&mut hasher);
     let mut env = cmd.get_envs().iter().collect::<Vec<_>>();
-    env.sort();
+    env.sort_unstable();
     env.hash(&mut hasher);
     hasher.finish()
 }
index a859c65a2331b1d378b29205a0fb2a6b5f0b61e8..35e49d1b96a8f6f3e0fb4bdb3a8390b2a1d5297a 100644 (file)
@@ -280,7 +280,7 @@ fn check_dir_contents(
 
     let actual = list_dir(out_dir);
     let mut expected = expected.iter().map(|s| s.to_string()).collect::<Vec<_>>();
-    expected.sort();
+    expected.sort_unstable();
     assert_eq!(actual, expected);
 }
 
@@ -290,6 +290,6 @@ fn list_dir(dir: &Path) -> Vec<String> {
         let entry = entry.unwrap();
         res.push(entry.file_name().into_string().unwrap());
     }
-    res.sort();
+    res.sort_unstable();
     res
 }