Extract the sibling activation function.
authorJeffrey Yasskin <jyasskin@gmail.com>
Sat, 15 Aug 2015 21:50:53 +0000 (14:50 -0700)
committerJeffrey Yasskin <jyasskin@gmail.com>
Wed, 26 Aug 2015 02:34:40 +0000 (19:34 -0700)
src/cargo/core/resolver/mod.rs

index 5d630e2bd2a63f810089ebc93d00c7b23f3aca08..a44c22130412909a05c5964d49418a18933c0ab8 100644 (file)
@@ -397,19 +397,20 @@ fn activate_deps(cx: Box<Context>,
         if !dep.is_transitive() {
             my_cx.visited.clear();
         }
+        let activate_result = try!(activate(&mut my_cx, registry, candidate, &method));
+        let activate_siblings = &mut |cx:Box<Context>, registry:&mut Registry| {
+            activate_deps(cx, registry, parent, platform, deps.clone(), cur + 1, finished)
+        };
         let result: ResolveResult =
-            match try!(activate(&mut my_cx, registry, candidate, &method)) {
+            match activate_result {
                 ActivateResult::AlreadyActivated => {
-                    activate_deps(my_cx, registry, parent, platform, deps.clone(), cur + 1,
-                                  finished)
+                    activate_siblings(my_cx, registry)
                 }
                 ActivateResult::CheckChildren{id, children, platform} => {
                     activate_deps(my_cx, registry, candidate, platform, children.iter(), 0,
                                   &mut |mut cx, registry| {
                                       cx.visited.remove(id);
-                                      activate_deps(cx, registry, parent, platform, deps.clone(),
-                                                    cur + 1, finished)
-
+                                      activate_siblings(cx, registry)
                                   })
                 }
             };