Skip to content

Commit 0e91a84

Browse files
committed
Add PartialSolution::prioritized_packages
1 parent 7f96381 commit 0e91a84

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/internal/partial_solution.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff 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,

0 commit comments

Comments
 (0)