]> git.proxmox.com Git - cargo.git/commitdiff
clean -p: call `get_many` once.
authorEric Huss <eric@huss.org>
Wed, 6 May 2020 16:36:07 +0000 (09:36 -0700)
committerEric Huss <eric@huss.org>
Wed, 6 May 2020 16:36:07 +0000 (09:36 -0700)
src/cargo/ops/cargo_clean.rs

index b9761dbeff07aa840bc55404ea84f279dfa7a35d..a8b39c4b5b95c5079c5488d6e6251c76d4d84974 100644 (file)
@@ -91,7 +91,7 @@ pub fn clean(ws: &Workspace<'_>, opts: &CleanOptions<'_>) -> CargoResult<()> {
     // Doc tests produce no output.
 
     // Get Packages for the specified specs.
-    let mut packages = Vec::new();
+    let mut pkg_ids = Vec::new();
     for spec_str in opts.spec.iter() {
         // Translate the spec to a Package.
         let spec = PackageIdSpec::parse(spec_str)?;
@@ -115,8 +115,9 @@ pub fn clean(ws: &Workspace<'_>, opts: &CleanOptions<'_>) -> CargoResult<()> {
         if matches.is_empty() {
             anyhow::bail!("package ID specification `{}` matched no packages", spec);
         }
-        packages.extend(pkg_set.get_many(matches)?);
+        pkg_ids.extend(matches);
     }
+    let packages = pkg_set.get_many(pkg_ids)?;
 
     for pkg in packages {
         let pkg_dir = format!("{}-*", pkg.name());