File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -267,6 +267,25 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
267267 }
268268 }
269269
270+ #[ cold]
271+ pub fn prioritized_packages ( & self ) -> impl Iterator < Item = ( Id < DP :: P > , & DP :: VS ) > {
272+ let check_all = self . changed_this_decision_level
273+ == self . current_decision_level . 0 . saturating_sub ( 1 ) as usize ;
274+ let current_decision_level = self . current_decision_level ;
275+ self . package_assignments
276+ . get_range ( self . changed_this_decision_level ..)
277+ . unwrap ( )
278+ . iter ( )
279+ . filter ( move |( _, pa) | {
280+ // We only actually need to update the package if its Been changed
281+ // since the last time we called prioritize.
282+ // Which means it's highest decision level is the current decision level,
283+ // or if we backtracked in the mean time.
284+ check_all || pa. highest_decision_level == current_decision_level
285+ } )
286+ . filter_map ( |( & p, pa) | pa. assignments_intersection . potential_package_filter ( p) )
287+ }
288+
270289 #[ cold]
271290 pub fn pick_highest_priority_pkg (
272291 & mut self ,
You can’t perform that action at this time.
0 commit comments