diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-23 17:33:56 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-23 17:34:58 +0900 |
| commit | f5b987a00712211b7ce56300851182bda904e97b (patch) | |
| tree | bc68c720246a988c11d83cf3e4a6dc78cee90023 /crates/shirabe/src/dependency_resolver/generic_rule.rs | |
| parent | 106e01f36fa8dd9bc3eb3a1411bd011a618a2836 (diff) | |
| download | php-shirabe-f5b987a00712211b7ce56300851182bda904e97b.tar.gz php-shirabe-f5b987a00712211b7ce56300851182bda904e97b.tar.zst php-shirabe-f5b987a00712211b7ce56300851182bda904e97b.zip | |
refactor(resolver): change Rule to a closed enum
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/generic_rule.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/generic_rule.rs | 85 |
1 files changed, 12 insertions, 73 deletions
diff --git a/crates/shirabe/src/dependency_resolver/generic_rule.rs b/crates/shirabe/src/dependency_resolver/generic_rule.rs index 11cff06..eada1c3 100644 --- a/crates/shirabe/src/dependency_resolver/generic_rule.rs +++ b/crates/shirabe/src/dependency_resolver/generic_rule.rs @@ -2,9 +2,9 @@ use crate::dependency_resolver::{Rule, RuleBase}; use anyhow::Result; -use shirabe_php_shim::{PHP_VERSION_ID, PhpMixed, RuntimeException, hash_raw, implode, unpack}; +use shirabe_php_shim::{PHP_VERSION_ID, PhpMixed, RuntimeException, hash_raw, unpack}; -use super::{request::Request, rule::ReasonData}; +use super::rule::ReasonData; #[derive(Debug)] pub struct GenericRule { @@ -19,6 +19,14 @@ impl GenericRule { Self { inner, literals } } + pub(crate) fn base(&self) -> &RuleBase { + &self.inner + } + + pub(crate) fn base_mut(&mut self) -> &mut RuleBase { + &mut self.inner + } + pub fn get_literals(&self) -> &Vec<i64> { &self.literals } @@ -57,8 +65,8 @@ impl GenericRule { } } - pub fn equals(&self, rule: &dyn RuleLiterals) -> bool { - self.literals == *rule.get_literals() + pub fn equals(&self, rule: &Rule) -> bool { + self.literals == rule.get_literals() } pub fn is_assertion(&self) -> bool { @@ -66,75 +74,6 @@ impl GenericRule { } } -pub trait RuleLiterals { - fn get_literals(&self) -> &Vec<i64>; - fn is_multi_conflict_rule(&self) -> bool { - false - } - fn is_assertion(&self) -> bool { - false - } - fn is_disabled(&self) -> bool { - false - } - fn as_any(&self) -> &dyn std::any::Any { - todo!() - } - /// Clone this rule into an owned `Box<dyn Rule>` so callers like - /// `RuleWatchGraph::propagate_literal` can hand it to `Decisions::decide`. - fn clone_rule_box(&self) -> Box<dyn Rule> { - todo!() - } -} - -impl RuleLiterals for GenericRule { - fn get_literals(&self) -> &Vec<i64> { - &self.literals - } -} - -impl Rule for GenericRule { - fn bitfield(&self) -> i64 { - todo!() - } - - fn bitfield_mut(&mut self) -> &mut i64 { - todo!() - } - - fn request(&self) -> Option<&Request> { - todo!() - } - - fn request_mut(&mut self) -> Option<&mut Request> { - todo!() - } - - fn reason_data(&self) -> Option<&ReasonData> { - todo!() - } - - fn reason_data_mut(&mut self) -> Option<&mut ReasonData> { - todo!() - } - - fn get_literals(&self) -> Vec<i64> { - todo!() - } - - fn get_hash(&self) -> PhpMixed { - todo!() - } - - fn equals(&self, rule: &dyn Rule) -> bool { - todo!() - } - - fn is_assertion(&self) -> bool { - todo!() - } -} - impl std::fmt::Display for GenericRule { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( |
