From 9d7dc2350ff8f5573990b6b63afe130e4dd70982 Mon Sep 17 00:00:00 2001 From: Jarrett Ye Date: Thu, 10 Jul 2025 12:14:11 +0800 Subject: [PATCH] Refactor desired retention logic in Collection implementation Updated the logic for retrieving deck-specific desired retention in both `memory_state.rs` and `mod.rs` to handle cases where the deck's normal state may not be available. This change ensures that the default configuration is used when necessary, improving the robustness of the retention handling. --- rslib/src/scheduler/answering/mod.rs | 6 ++++-- rslib/src/scheduler/fsrs/memory_state.rs | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index e7be9fa43..5be34c544 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -447,8 +447,10 @@ impl Collection { // Get deck-specific desired retention if available, otherwise use config // default - let desired_retention = if let Some(deck_dr) = deck.normal()?.desired_retention { - deck_dr + let desired_retention = if let Ok(normal_deck) = deck.normal() { + normal_deck + .desired_retention + .unwrap_or(config.inner.desired_retention) } else { config.inner.desired_retention }; diff --git a/rslib/src/scheduler/fsrs/memory_state.rs b/rslib/src/scheduler/fsrs/memory_state.rs index d5b2dbe2a..6428dffde 100644 --- a/rslib/src/scheduler/fsrs/memory_state.rs +++ b/rslib/src/scheduler/fsrs/memory_state.rs @@ -208,8 +208,10 @@ impl Collection { // Get deck-specific desired retention if available, otherwise use config // default - let desired_retention = if let Some(deck_dr) = deck.normal()?.desired_retention { - deck_dr + let desired_retention = if let Ok(normal_deck) = deck.normal() { + normal_deck + .desired_retention + .unwrap_or(config.inner.desired_retention) } else { config.inner.desired_retention };