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 @@ -254,6 +254,24 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
254254 }
255255 }
256256
257+ pub fn prioritized_packages ( & self ) -> impl Iterator < Item = ( & DP :: P , & DP :: VS ) > {
258+ let check_all = self . changed_this_decision_level
259+ == self . current_decision_level . 0 . saturating_sub ( 1 ) as usize ;
260+ let current_decision_level = self . current_decision_level ;
261+ self . package_assignments
262+ . get_range ( self . changed_this_decision_level ..)
263+ . unwrap ( )
264+ . iter ( )
265+ . filter ( move |( _, pa) | {
266+ // We only actually need to update the package if its Been changed
267+ // since the last time we called prioritize.
268+ // Which means it's highest decision level is the current decision level,
269+ // or if we backtracked in the mean time.
270+ check_all || pa. highest_decision_level == current_decision_level
271+ } )
272+ . filter_map ( |( p, pa) | pa. assignments_intersection . potential_package_filter ( p) )
273+ }
274+
257275 pub fn pick_highest_priority_pkg (
258276 & mut self ,
259277 prioritizer : impl Fn ( & DP :: P , & DP :: VS ) -> DP :: Priority ,
You can’t perform that action at this time.
0 commit comments