From 15d4a1e563c2dfc4bdfb225412cc2c42a1663529 Mon Sep 17 00:00:00 2001 From: David Senk Date: Sat, 7 Sep 2024 18:13:14 -0400 Subject: [PATCH] moved logic to a better place --- src/lib.rs | 14 ++++++++------ tests/state_changer.rs | 6 +++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a72d8b0..4a134a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,13 +33,17 @@ impl StateOwner { StateKeeper { state: self.state.write().unwrap() } } - pub fn check_transactions(&self, state_keeper: &StateKeeper, change_queue: &[StateModifier]) -> bool { +} + + +impl StateKeeper<'_> { + pub fn check_transactions(&self, change_queue: &[StateModifier]) -> bool { for modifier in change_queue { match modifier { //ReplaceFull will always be valid StateModifier::ReplaceFull(_) => {}, StateModifier::ReplaceAt(pos, c) => { - if pos > &state_keeper.state.len() { + if pos > &self.state.len() { return false; } if !c.is_ascii_alphanumeric() { @@ -51,9 +55,9 @@ impl StateOwner { true } - pub fn close_transaction(&self, state_keeper: StateKeeper, change_queue: Vec) { + pub fn close_transaction(self, change_queue: Vec) { - let mut state = state_keeper.state; + let mut state = self.state; for modifier in change_queue { print!("Applying modifier: "); @@ -76,10 +80,8 @@ impl StateOwner { println!("After: {state}"); } } - } - #[derive(Debug)] pub enum StateModifier { ReplaceFull(String), diff --git a/tests/state_changer.rs b/tests/state_changer.rs index 58a2d57..3bd2f6c 100644 --- a/tests/state_changer.rs +++ b/tests/state_changer.rs @@ -24,7 +24,7 @@ fn create_and_modify_state_owner() { //check individually for modifier in &modifiers { - let is_valid = example.check_transactions(&keeper, std::slice::from_ref(modifier)); + let is_valid = keeper.check_transactions(std::slice::from_ref(modifier)); println!("{modifier:?} - Valid? {is_valid}"); assert!(is_valid); @@ -32,13 +32,13 @@ fn create_and_modify_state_owner() { //check all at once - let is_valid = example.check_transactions(&keeper, modifiers.as_slice()); + let is_valid = keeper.check_transactions(modifiers.as_slice()); println!("All valid in one shot? {is_valid}"); assert!(is_valid); - example.close_transaction(keeper, modifiers); + keeper.close_transaction(modifiers); println!("Current State? {}", example.get_state());