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