aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/decisions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/decisions.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/decisions.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/crates/shirabe/src/dependency_resolver/decisions.rs b/crates/shirabe/src/dependency_resolver/decisions.rs
index 22b6fa4..8ef8b25 100644
--- a/crates/shirabe/src/dependency_resolver/decisions.rs
+++ b/crates/shirabe/src/dependency_resolver/decisions.rs
@@ -11,7 +11,7 @@ use std::fmt;
pub struct Decisions {
pub(crate) pool: Pool,
pub(crate) decision_map: IndexMap<i64, i64>,
- pub(crate) decision_queue: Vec<(i64, Rule)>,
+ pub(crate) decision_queue: Vec<(i64, Box<dyn Rule>)>,
iterator_cursor: Option<usize>,
}
@@ -28,7 +28,7 @@ impl Decisions {
}
}
- pub fn decide(&mut self, literal: i64, level: i64, why: Rule) {
+ pub fn decide(&mut self, literal: i64, level: i64, why: Box<dyn Rule>) {
self.add_decision(literal, level);
self.decision_queue.push((literal, why));
}
@@ -82,12 +82,12 @@ impl Decisions {
0
}
- pub fn decision_rule(&self, literal_or_package_id: i64) -> &Rule {
+ pub fn decision_rule(&self, literal_or_package_id: i64) -> &dyn Rule {
let package_id = literal_or_package_id.abs();
for decision in &self.decision_queue {
if package_id == decision.0.abs() {
- return &decision.1;
+ return &*decision.1;
}
}
@@ -104,7 +104,7 @@ impl Decisions {
);
}
- pub fn at_offset(&self, queue_offset: usize) -> &(i64, Rule) {
+ pub fn at_offset(&self, queue_offset: usize) -> &(i64, Box<dyn Rule>) {
&self.decision_queue[queue_offset]
}
@@ -112,8 +112,8 @@ impl Decisions {
queue_offset >= 0 && queue_offset < self.decision_queue.len() as i64
}
- pub fn last_reason(&self) -> &Rule {
- &self.decision_queue[self.decision_queue.len() - 1].1
+ pub fn last_reason(&self) -> &dyn Rule {
+ &*self.decision_queue[self.decision_queue.len() - 1].1
}
pub fn last_literal(&self) -> i64 {
@@ -151,7 +151,7 @@ impl Decisions {
}
}
- pub fn current(&self) -> Option<&(i64, Rule)> {
+ pub fn current(&self) -> Option<&(i64, Box<dyn Rule>)> {
self.iterator_cursor
.and_then(|cursor| self.decision_queue.get(cursor))
}