aboutsummaryrefslogtreecommitdiff
path: root/crates
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 /crates
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>
Diffstat (limited to 'crates')
-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;
}
}
}