Retain a vector instead of reallocating
authorAlex Crichton <alex@alexcrichton.com>
Tue, 6 Mar 2018 23:09:53 +0000 (15:09 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 6 Mar 2018 23:09:53 +0000 (15:09 -0800)
No need to create a new version!

src/cargo/sources/registry/mod.rs

index 319f2a9dd6a6d5c5cda4496695a75147bb2f06ef..18ff758971074d98b58dfcb42f79cf007a9c7d82 100644 (file)
@@ -499,7 +499,7 @@ impl<'de> de::Deserialize<'de> for DependencyList {
 fn parse_registry_dependency(dep: RegistryDependency)
                              -> CargoResult<Dependency> {
     let RegistryDependency {
-        name, req, features, optional, default_features, target, kind, registry
+        name, req, mut features, optional, default_features, target, kind, registry
     } = dep;
 
     let id = if let Some(registry) = registry {
@@ -527,7 +527,7 @@ fn parse_registry_dependency(dep: RegistryDependency)
     // empty feature, "", inside. This confuses the resolution process much
     // later on and these features aren't actually valid, so filter them all
     // out here.
-    let features = features.into_iter().filter(|s| !s.is_empty()).collect();
+    features.retain(|s| !s.is_empty());
 
     dep.set_optional(optional)
        .set_default_features(default_features)