diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-19 00:10:22 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-19 00:11:03 +0900 |
| commit | c839244d8d09f3036ebfee8eef7eb6b147e593ab (patch) | |
| tree | fe48c94f2c2e62468beef5ff1a8f3cff6adeef4f /crates/shirabe/src/dependency_resolver/rule_watch_chain.rs | |
| parent | 48839250146b217e2756ed3c0e624fd341b54d6c (diff) | |
| download | php-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.tar.gz php-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.tar.zst php-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.zip | |
fix(compile): fix various compile errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/rule_watch_chain.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/rule_watch_chain.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/crates/shirabe/src/dependency_resolver/rule_watch_chain.rs b/crates/shirabe/src/dependency_resolver/rule_watch_chain.rs index 3d04f1c..3355b29 100644 --- a/crates/shirabe/src/dependency_resolver/rule_watch_chain.rs +++ b/crates/shirabe/src/dependency_resolver/rule_watch_chain.rs @@ -3,8 +3,9 @@ use crate::dependency_resolver::rule_watch_node::RuleWatchNode; /// An extension of SplDoublyLinkedList with seek and removal of current element. +#[derive(Debug)] pub struct RuleWatchChain { - data: Vec<RuleWatchNode>, + data: Vec<std::rc::Rc<std::cell::RefCell<RuleWatchNode>>>, current_offset: usize, } @@ -16,14 +17,26 @@ impl RuleWatchChain { } } - fn rewind(&mut self) { + pub(crate) fn rewind(&mut self) { self.current_offset = 0; } - fn next(&mut self) { + pub(crate) fn next(&mut self) { self.current_offset += 1; } + pub(crate) fn valid(&self) -> bool { + self.current_offset < self.data.len() + } + + pub(crate) fn current(&self) -> &std::rc::Rc<std::cell::RefCell<RuleWatchNode>> { + &self.data[self.current_offset] + } + + pub(crate) fn unshift(&mut self, node: std::rc::Rc<std::cell::RefCell<RuleWatchNode>>) { + self.data.insert(0, node); + } + fn key(&self) -> usize { self.current_offset } |
