aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/solver.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-08 03:24:27 +0900
committernsfisis <nsfisis@gmail.com>2026-08-08 03:25:02 +0900
commitb4f16a379e919eefc2cb37bcddee589c0f26eaad (patch)
treefcd970b83deb89a04fb5daf2c107d6f75b34e0f2 /crates/shirabe/src/dependency_resolver/solver.rs
parentda0d38a8e16ebefd59ef5291b5788e6238cc78ba (diff)
downloadphp-shirabe-b4f16a379e919eefc2cb37bcddee589c0f26eaad.tar.gz
php-shirabe-b4f16a379e919eefc2cb37bcddee589c0f26eaad.tar.zst
php-shirabe-b4f16a379e919eefc2cb37bcddee589c0f26eaad.zip
refactor(php-shim): dispatch spl_object_hash on Rc and references
Getting a rule's identity meant spl_object_hash(&*rule.borrow()), so the solver borrowed a RefCell just to read an address, and a second function spl_object_hash_process existed because one generic fn cannot tell Rc<T> from &T. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/solver.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/solver.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/crates/shirabe/src/dependency_resolver/solver.rs b/crates/shirabe/src/dependency_resolver/solver.rs
index 09a51ef8..dd5bd383 100644
--- a/crates/shirabe/src/dependency_resolver/solver.rs
+++ b/crates/shirabe/src/dependency_resolver/solver.rs
@@ -397,7 +397,7 @@ impl Solver {
self.rules.add(new_rule.clone(), RuleSet::TYPE_LEARNED)?;
self.learned_why
- .insert(spl_object_hash(&*new_rule.borrow()), why);
+ .insert(spl_object_hash(new_rule.clone()), why);
let rule_node = std::rc::Rc::new(std::cell::RefCell::new(RuleWatchNode::new(
new_rule.clone(),
@@ -610,7 +610,7 @@ impl Solver {
conflict_rule: std::rc::Rc<std::cell::RefCell<Rule>>,
rule_seen: &mut IndexMap<String, bool>,
) {
- let why = spl_object_hash(&*conflict_rule.borrow());
+ let why = spl_object_hash(conflict_rule.clone());
rule_seen.insert(why.clone(), true);
if conflict_rule.borrow().get_type() == RuleSet::TYPE_LEARNED {
@@ -618,7 +618,7 @@ impl Solver {
let problem_rules = self.learned_pool[learned_why as usize].clone();
for problem_rule in problem_rules {
- if !rule_seen.contains_key(&spl_object_hash(&*problem_rule.borrow())) {
+ if !rule_seen.contains_key(&spl_object_hash(problem_rule.clone())) {
self.analyze_unsolvable_rule(problem, problem_rule, rule_seen);
}
}