diff options
| author | mo8it <mo8it@proton.me> | 2025-02-18 20:10:52 +0100 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2025-02-18 20:10:52 +0100 |
| commit | d9872f2615a11ce94deb85c8f1c215d69abd7992 (patch) | |
| tree | a525e7eaac10e75db45921f79578d3da33bf1a13 /src/app_state.rs | |
| parent | 298be671b9108e490fcef6b8febace8659ec710a (diff) | |
Upgrade to edition 2024
Diffstat (limited to 'src/app_state.rs')
| -rw-r--r-- | src/app_state.rs | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/src/app_state.rs b/src/app_state.rs index 5979150..d1c45d4 100644 --- a/src/app_state.rs +++ b/src/app_state.rs @@ -1,11 +1,11 @@ -use anyhow::{bail, Context, Error, Result}; -use crossterm::{cursor, terminal, QueueableCommand}; +use anyhow::{Context, Error, Result, bail}; +use crossterm::{QueueableCommand, cursor, terminal}; use std::{ collections::HashSet, env, fs::{File, OpenOptions}, io::{Read, Seek, StdoutLock, Write}, - path::{Path, MAIN_SEPARATOR_STR}, + path::{MAIN_SEPARATOR_STR, Path}, process::{Command, Stdio}, sync::{ atomic::{AtomicUsize, Ordering::Relaxed}, @@ -427,32 +427,34 @@ impl AppState { let next_exercise_ind = &next_exercise_ind; let slf = &self; thread::Builder::new() - .spawn_scoped(s, move || loop { - let exercise_ind = next_exercise_ind.fetch_add(1, Relaxed); - let Some(exercise) = slf.exercises.get(exercise_ind) else { - // No more exercises. - break; - }; - - if exercise_progress_sender - .send((exercise_ind, CheckProgress::Checking)) - .is_err() - { - break; - }; - - let success = exercise.run_exercise(None, &slf.cmd_runner); - let progress = match success { - Ok(true) => CheckProgress::Done, - Ok(false) => CheckProgress::Pending, - Err(_) => CheckProgress::None, - }; - - if exercise_progress_sender - .send((exercise_ind, progress)) - .is_err() - { - break; + .spawn_scoped(s, move || { + loop { + let exercise_ind = next_exercise_ind.fetch_add(1, Relaxed); + let Some(exercise) = slf.exercises.get(exercise_ind) else { + // No more exercises. + break; + }; + + if exercise_progress_sender + .send((exercise_ind, CheckProgress::Checking)) + .is_err() + { + break; + }; + + let success = exercise.run_exercise(None, &slf.cmd_runner); + let progress = match success { + Ok(true) => CheckProgress::Done, + Ok(false) => CheckProgress::Pending, + Err(_) => CheckProgress::None, + }; + + if exercise_progress_sender + .send((exercise_ind, progress)) + .is_err() + { + break; + } } }) .context("Failed to spawn a thread to check all exercises")?; |
