File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -256,6 +256,24 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
256256 }
257257 }
258258
259+ pub fn prioritized_packages ( & self ) -> impl Iterator < Item = ( & DP :: P , & DP :: VS ) > {
260+ let check_all = self . changed_this_decision_level
261+ == self . current_decision_level . 0 . saturating_sub ( 1 ) as usize ;
262+ let current_decision_level = self . current_decision_level ;
263+ self . package_assignments
264+ . get_range ( self . changed_this_decision_level ..)
265+ . unwrap ( )
266+ . iter ( )
267+ . filter ( move |( _, pa) | {
268+ // We only actually need to update the package if its Been changed
269+ // since the last time we called prioritize.
270+ // Which means it's highest decision level is the current decision level,
271+ // or if we backtracked in the mean time.
272+ check_all || pa. highest_decision_level == current_decision_level
273+ } )
274+ . filter_map ( |( p, pa) | pa. assignments_intersection . potential_package_filter ( p) )
275+ }
276+
259277 pub fn pick_highest_priority_pkg (
260278 & mut self ,
261279 prioritizer : impl Fn ( & DP :: P , & DP :: VS ) -> DP :: Priority ,
You can’t perform that action at this time.
0 commit comments