From f5b987a00712211b7ce56300851182bda904e97b Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 23 May 2026 17:33:56 +0900 Subject: refactor(resolver): change Rule to a closed enum Co-Authored-By: Claude Opus 4.7 --- crates/shirabe/src/dependency_resolver/rule_set_iterator.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'crates/shirabe/src/dependency_resolver/rule_set_iterator.rs') diff --git a/crates/shirabe/src/dependency_resolver/rule_set_iterator.rs b/crates/shirabe/src/dependency_resolver/rule_set_iterator.rs index 73c406f..c1b8657 100644 --- a/crates/shirabe/src/dependency_resolver/rule_set_iterator.rs +++ b/crates/shirabe/src/dependency_resolver/rule_set_iterator.rs @@ -1,12 +1,15 @@ //! ref: composer/src/Composer/DependencyResolver/RuleSetIterator.php +use std::cell::RefCell; +use std::rc::Rc; + use crate::dependency_resolver::Rule; use indexmap::IndexMap; /// Implements PHP \Iterator over a grouped rule set. #[derive(Debug)] pub struct RuleSetIterator { - pub(crate) rules: IndexMap>>, + pub(crate) rules: IndexMap>>>, pub(crate) types: Vec, pub(crate) current_offset: i64, pub(crate) current_type: i64, @@ -14,7 +17,7 @@ pub struct RuleSetIterator { } impl RuleSetIterator { - pub fn new(rules: IndexMap>>) -> Self { + pub fn new(rules: IndexMap>>>) -> Self { let mut types: Vec = rules.keys().copied().collect(); types.sort(); let mut iter = Self { @@ -28,8 +31,8 @@ impl RuleSetIterator { iter } - pub fn current(&self) -> &dyn Rule { - &*self.rules[&self.current_type][self.current_offset as usize] + pub fn current(&self) -> Rc> { + self.rules[&self.current_type][self.current_offset as usize].clone() } pub fn key(&self) -> i64 { -- cgit v1.3.1