Skip to content

Commit 023d8bb

Browse files
konstincharliermarsh
authored andcommitted
Add PartialSolution::prioritized_packages
1 parent b785e19 commit 023d8bb

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
@@ -267,6 +267,25 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
267267
}
268268
}
269269

270+
#[cold]
271+
pub fn prioritized_packages(&self) -> impl Iterator<Item = (Id<DP::P>, &DP::VS)> {
272+
let check_all = self.changed_this_decision_level
273+
== self.current_decision_level.0.saturating_sub(1) as usize;
274+
let current_decision_level = self.current_decision_level;
275+
self.package_assignments
276+
.get_range(self.changed_this_decision_level..)
277+
.unwrap()
278+
.iter()
279+
.filter(move |(_, pa)| {
280+
// We only actually need to update the package if its Been changed
281+
// since the last time we called prioritize.
282+
// Which means it's highest decision level is the current decision level,
283+
// or if we backtracked in the mean time.
284+
check_all || pa.highest_decision_level == current_decision_level
285+
})
286+
.filter_map(|(&p, pa)| pa.assignments_intersection.potential_package_filter(p))
287+
}
288+
270289
#[cold]
271290
pub fn pick_highest_priority_pkg(
272291
&mut self,

0 commit comments

Comments
 (0)