mirror of
https://github.com/ankitects/anki.git
synced 2026-01-20 09:49:00 -05:00
Refactor decay calculation into a helper function for improved readability and maintainability in memory state management
This commit is contained in:
parent
74997f97a2
commit
c8d759cbda
1 changed files with 13 additions and 16 deletions
|
|
@ -30,6 +30,17 @@ pub struct ComputeMemoryProgress {
|
||||||
pub total_cards: u32,
|
pub total_cards: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Helper function to determine the appropriate decay value based on FSRS parameters
|
||||||
|
fn get_decay_from_params(params: &[f32]) -> f32 {
|
||||||
|
if params.is_empty() {
|
||||||
|
FSRS6_DEFAULT_DECAY // default decay for FSRS-6
|
||||||
|
} else if params.len() < 21 {
|
||||||
|
FSRS5_DEFAULT_DECAY // default decay for FSRS-4.5 and FSRS-5
|
||||||
|
} else {
|
||||||
|
params[20]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(crate) struct UpdateMemoryStateRequest {
|
pub(crate) struct UpdateMemoryStateRequest {
|
||||||
pub params: Params,
|
pub params: Params,
|
||||||
|
|
@ -77,15 +88,7 @@ impl Collection {
|
||||||
.then(|| Rescheduler::new(self))
|
.then(|| Rescheduler::new(self))
|
||||||
.transpose()?;
|
.transpose()?;
|
||||||
let fsrs = FSRS::new(req.as_ref().map(|w| &w.params[..]).or(Some([].as_slice())))?;
|
let fsrs = FSRS::new(req.as_ref().map(|w| &w.params[..]).or(Some([].as_slice())))?;
|
||||||
let decay = req.as_ref().map(|w| {
|
let decay = req.as_ref().map(|w| get_decay_from_params(&w.params));
|
||||||
if w.params.is_empty() {
|
|
||||||
FSRS6_DEFAULT_DECAY // default decay for FSRS-6
|
|
||||||
} else if w.params.len() < 21 {
|
|
||||||
FSRS5_DEFAULT_DECAY // default decay for FSRS-4.5 and FSRS-5
|
|
||||||
} else {
|
|
||||||
w.params[20]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let historical_retention = req.as_ref().map(|w| w.historical_retention);
|
let historical_retention = req.as_ref().map(|w| w.historical_retention);
|
||||||
let items = fsrs_items_for_memory_states(
|
let items = fsrs_items_for_memory_states(
|
||||||
&fsrs,
|
&fsrs,
|
||||||
|
|
@ -191,13 +194,7 @@ impl Collection {
|
||||||
let desired_retention = config.inner.desired_retention;
|
let desired_retention = config.inner.desired_retention;
|
||||||
let historical_retention = config.inner.historical_retention;
|
let historical_retention = config.inner.historical_retention;
|
||||||
let params = config.fsrs_params();
|
let params = config.fsrs_params();
|
||||||
let decay = if params.is_empty() {
|
let decay = get_decay_from_params(¶ms);
|
||||||
FSRS6_DEFAULT_DECAY // default decay for FSRS-6
|
|
||||||
} else if params.len() < 21 {
|
|
||||||
FSRS5_DEFAULT_DECAY // default decay for FSRS-4.5 and FSRS-5
|
|
||||||
} else {
|
|
||||||
params[20]
|
|
||||||
};
|
|
||||||
let fsrs = FSRS::new(Some(params))?;
|
let fsrs = FSRS::new(Some(params))?;
|
||||||
let revlog = self.revlog_for_srs(SearchNode::CardIds(card.id.to_string()))?;
|
let revlog = self.revlog_for_srs(SearchNode::CardIds(card.id.to_string()))?;
|
||||||
let item = fsrs_item_for_memory_state(
|
let item = fsrs_item_for_memory_state(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue