use make_mut for cleaner code
authorEh2406 <YeomanYaacov@gmail.com>
Fri, 6 Apr 2018 16:38:41 +0000 (12:38 -0400)
committerEh2406 <YeomanYaacov@gmail.com>
Fri, 6 Apr 2018 16:38:41 +0000 (12:38 -0400)
src/cargo/core/resolver/context.rs

index f132463e3c8ba77eddecf50fdc724956e6262d22..2c2281d61071e7c212dacf06f312b2d01acca005 100644 (file)
@@ -68,9 +68,7 @@ impl Context {
                     &*link
                 );
             }
-            let mut inner: Vec<_> = (**prev).clone();
-            inner.push(summary.clone());
-            *prev = Rc::new(inner);
+            Rc::make_mut(prev).push(summary.clone());
             return Ok(false);
         }
         debug!("checking if {} is already activated", summary.package_id());
@@ -246,15 +244,13 @@ impl Context {
         if !reqs.used.is_empty() {
             let pkgid = s.package_id();
 
-            let set = self.resolve_features
+            let set = Rc::make_mut(self.resolve_features
                 .entry(pkgid.clone())
-                .or_insert_with(|| Rc::new(HashSet::new()));
+                .or_insert_with(|| Rc::new(HashSet::new())));
 
-            let mut inner: HashSet<_> = (**set).clone();
             for feature in reqs.used {
-                inner.insert(InternedString::new(feature));
+                set.insert(InternedString::new(feature));
             }
-            *set = Rc::new(inner);
         }
 
         Ok(ret)