From 36e56935647796cc31ad16db41c3a4eb8e316a5d Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Mon, 24 Aug 2026 00:29:41 +0300 Subject: [PATCH] Simple srs refactoring --- src/lang.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/lang.rs b/src/lang.rs index 79ba890..961c23a 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -431,23 +431,20 @@ impl DeckData { } let index = self.current_word_index.unwrap(); - let word = &mut self.set[index]; + let word : &mut CardStatistics = &mut self.set[index]; let old_score = word.score; word.update(status); let new_score = word.score; - match self.order_module.clone() { - OrderModule::SemiRandomSRS(mut module) => { - module.open(status, index, word.clone()); - self.order_module = OrderModule::SemiRandomSRS(module); + match self.order_module { + OrderModule::SemiRandomSRS(ref mut module) => { + module.open(status, index, word); } - OrderModule::RandomSRS(mut module) => { - module.open(status, index, word.clone()); - self.order_module = OrderModule::RandomSRS(module); + OrderModule::RandomSRS(ref mut module) => { + module.open(status, index, word); } - OrderModule::WorstWordsSRS(mut module) => { - module.open(status, index, word.clone()); - self.order_module = OrderModule::WorstWordsSRS(module); + OrderModule::WorstWordsSRS(ref mut module) => { + module.open(status, index, word); } } update_stat_score(word, &self.state.lock().connection); @@ -486,7 +483,7 @@ enum OrderModule { } trait SRSModule { fn next(&mut self, set: &mut DeckData) -> usize; - fn open(&mut self, status: WordOpenMode, index: usize, updated_word: CardStatistics); + fn open(&mut self, status: WordOpenMode, index: usize, updated_word: &CardStatistics); fn init(&mut self, set: &mut DeckData); } #[derive(Clone)] @@ -514,7 +511,7 @@ impl SRSModule for RandomSRSModule { } } - fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {} + fn open(&mut self, _: WordOpenMode, _: usize, _: &CardStatistics) {} fn init(&mut self, set: &mut DeckData) { self.initialized = true; @@ -554,7 +551,7 @@ impl SRSModule for SemiRandomSRSModule { index } - fn open(&mut self, _: WordOpenMode, index: usize, word: CardStatistics) { + fn open(&mut self, _: WordOpenMode, index: usize, word: &CardStatistics) { let new_weight = (100.0 / word.calculated_score()).powf(2.0); self.last_weights .update_weights(&[(index, &new_weight)]) @@ -601,7 +598,7 @@ impl SRSModule for WorstWordsSRSModule { } } - fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {} + fn open(&mut self, _: WordOpenMode, _: usize, _: &CardStatistics) {} fn init(&mut self, _: &mut DeckData) { self.initialized = true;