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 @@ -312,6 +312,25 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
312312 }
313313 }
314314
315+ #[ cold]
316+ pub fn prioritized_packages ( & self ) -> impl Iterator < Item = ( Id < DP :: P > , & DP :: VS ) > {
317+ let check_all = self . prioritize_decision_level
318+ == self . current_decision_level . 0 . saturating_sub ( 1 ) as usize ;
319+ let current_decision_level = self . current_decision_level ;
320+ self . package_assignments
321+ . get_range ( self . prioritize_decision_level ..)
322+ . unwrap ( )
323+ . iter ( )
324+ . filter ( move |( _, pa) | {
325+ // We only actually need to update the package if its Been changed
326+ // since the last time we called prioritize.
327+ // Which means it's highest decision level is the current decision level,
328+ // or if we backtracked in the mean time.
329+ check_all || pa. highest_decision_level == current_decision_level
330+ } )
331+ . filter_map ( |( & p, pa) | pa. assignments_intersection . potential_package_filter ( p) )
332+ }
333+
315334 #[ cold]
316335 pub fn pick_highest_priority_pkg (
317336 & mut self ,
You can’t perform that action at this time.
0 commit comments