aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-01-15 09:52:16 +0100
committerMiquel Sabaté Solà <mssola@mssola.com>2026-01-15 09:52:16 +0100
commitbc9f018e26597761c0e2c63b19337f431ab986db (patch)
treefc51c433fd3792a57ab9a3a76b4744e140cedac3
parent0c89256c782f0d1e98e93047fa90ad90b4e003e3 (diff)
downloadmihi-bc9f018e26597761c0e2c63b19337f431ab986db.tar.gz
mihi-bc9f018e26597761c0e2c63b19337f431ab986db.zip
Simplify practice loop by removing exit code
Since we no longer care that much about the exit code, we can simplify the main loop further, while also reordering how words are selected. Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
-rw-r--r--crates/cli/src/run.rs44
1 files changed, 16 insertions, 28 deletions
diff --git a/crates/cli/src/run.rs b/crates/cli/src/run.rs
index bbfa6bc..bc62770 100644
--- a/crates/cli/src/run.rs
+++ b/crates/cli/src/run.rs
@@ -311,40 +311,28 @@ pub fn run(args: Vec<String>) {
let locale = current_locale();
loop {
- let words = match category {
- Some(cat) => select_relevant_words(cat, &flags, 15),
- None => select_general_words(&flags),
- };
-
- let exercises =
- match mihi::select_relevant_exercises(kind, if exercises_only { 5 } else { 1 }) {
- Ok(exercises) => exercises,
- Err(e) => {
- println!("error: practice: {e}");
- std::process::exit(1);
- }
+ if !exercises_only {
+ let words = match category {
+ Some(cat) => select_relevant_words(cat, &flags, 15),
+ None => select_general_words(&flags),
};
-
- let code = match words {
- Ok(list) => {
- if !exercises_only
- && !run_words(list, &locale) {
- std::process::exit(1);
- }
- if !run_exercises(exercises) {
- std::process::exit(1);
+ if let Ok(list) = words {
+ if !run_words(list, &locale) {
+ break;
}
-
- 0
}
- Err(e) => {
- println!("error: practice: {e}");
- 1
+ }
+
+ if let Ok(exercises) =
+ mihi::select_relevant_exercises(kind, if exercises_only { 5 } else { 1 })
+ {
+ if !run_exercises(exercises) {
+ break;
}
- };
+ }
if !endless {
- std::process::exit(code);
+ break;
}
}
}