diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-22 04:19:14 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-22 04:19:25 +0900 |
| commit | 2a1696906344cb4da768a940bf8b1f89bbc82b47 (patch) | |
| tree | 9e37f93baaa9858037ab3a25b13a676f07ccb3a9 /crates/shirabe/src/dependency_resolver/decisions.rs | |
| parent | 6739da8a8e271a82d1bf8ca79bba58640ae6e743 (diff) | |
| download | php-shirabe-2a1696906344cb4da768a940bf8b1f89bbc82b47.tar.gz php-shirabe-2a1696906344cb4da768a940bf8b1f89bbc82b47.tar.zst php-shirabe-2a1696906344cb4da768a940bf8b1f89bbc82b47.zip | |
refactor: share Pool via Rc<RefCell>
Convert Pool to Rc<RefCell<Pool>> so Solver, Decisions, and
RuleSetGenerator share it, resolving the todo!() placeholders that
blocked the dependency resolver (Phase C shared ownership).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/decisions.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/decisions.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/crates/shirabe/src/dependency_resolver/decisions.rs b/crates/shirabe/src/dependency_resolver/decisions.rs index 1fdc1d3..f0842d9 100644 --- a/crates/shirabe/src/dependency_resolver/decisions.rs +++ b/crates/shirabe/src/dependency_resolver/decisions.rs @@ -8,7 +8,7 @@ use shirabe_php_shim::LogicException; use std::fmt; pub struct Decisions { - pub(crate) pool: Pool, + pub(crate) pool: std::rc::Rc<std::cell::RefCell<Pool>>, pub(crate) decision_map: IndexMap<i64, i64>, pub(crate) decision_queue: Vec<(i64, Box<dyn Rule>)>, iterator_cursor: Option<usize>, @@ -27,7 +27,7 @@ impl Decisions { pub const DECISION_LITERAL: usize = 0; pub const DECISION_REASON: usize = 1; - pub fn new(pool: Pool) -> Self { + pub fn new(pool: std::rc::Rc<std::cell::RefCell<Pool>>) -> Self { Self { pool, decision_map: IndexMap::new(), @@ -187,10 +187,9 @@ impl Decisions { let previous_decision = self.decision_map.get(&package_id).copied().unwrap_or(0); if previous_decision != 0 { - let literal_string = self - .pool - .literal_to_pretty_string(literal, &IndexMap::new()); - let package = self.pool.literal_to_package(literal); + let pool = self.pool.borrow(); + let literal_string = pool.literal_to_pretty_string(literal, &IndexMap::new()); + let package = pool.literal_to_package(literal); panic!( "{}", SolverBugException::new(format!( |
