Skip to content

Commit 38432d3

Browse files
committed
Add PartialSolution::prioritized_packages
1 parent 27ff4d2 commit 38432d3

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/internal/partial_solution.rs

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

0 commit comments

Comments
 (0)