@@ -20,7 +20,7 @@ use crate::{
20
20
embedded:: EMBEDDED_FILES ,
21
21
exercise:: { Exercise , RunnableExercise } ,
22
22
info_file:: ExerciseInfo ,
23
- term:: { self , ExercisesCheckProgressVisualizer } ,
23
+ term:: { self , CheckProgressVisualizer } ,
24
24
} ;
25
25
26
26
const STATE_FILE_NAME : & str = ".rustlings-state.txt" ;
@@ -42,7 +42,7 @@ pub enum StateFileStatus {
42
42
}
43
43
44
44
#[ derive( Clone , Copy ) ]
45
- pub enum ExerciseCheckProgress {
45
+ pub enum CheckProgress {
46
46
None ,
47
47
Checking ,
48
48
Done ,
@@ -412,10 +412,10 @@ impl AppState {
412
412
let term_width = terminal:: size ( )
413
413
. context ( "Failed to get the terminal size" ) ?
414
414
. 0 ;
415
- let mut progress_visualizer = ExercisesCheckProgressVisualizer :: build ( stdout, term_width) ?;
415
+ let mut progress_visualizer = CheckProgressVisualizer :: build ( stdout, term_width) ?;
416
416
417
417
let next_exercise_ind = AtomicUsize :: new ( 0 ) ;
418
- let mut progresses = vec ! [ ExerciseCheckProgress :: None ; self . exercises. len( ) ] ;
418
+ let mut progresses = vec ! [ CheckProgress :: None ; self . exercises. len( ) ] ;
419
419
420
420
thread:: scope ( |s| {
421
421
let ( exercise_progress_sender, exercise_progress_receiver) = mpsc:: channel ( ) ;
@@ -435,17 +435,17 @@ impl AppState {
435
435
} ;
436
436
437
437
if exercise_progress_sender
438
- . send ( ( exercise_ind, ExerciseCheckProgress :: Checking ) )
438
+ . send ( ( exercise_ind, CheckProgress :: Checking ) )
439
439
. is_err ( )
440
440
{
441
441
break ;
442
442
} ;
443
443
444
444
let success = exercise. run_exercise ( None , & slf. cmd_runner ) ;
445
445
let progress = match success {
446
- Ok ( true ) => ExerciseCheckProgress :: Done ,
447
- Ok ( false ) => ExerciseCheckProgress :: Pending ,
448
- Err ( _) => ExerciseCheckProgress :: None ,
446
+ Ok ( true ) => CheckProgress :: Done ,
447
+ Ok ( false ) => CheckProgress :: Pending ,
448
+ Err ( _) => CheckProgress :: None ,
449
449
} ;
450
450
451
451
if exercise_progress_sender
@@ -472,34 +472,33 @@ impl AppState {
472
472
let mut first_pending_exercise_ind = None ;
473
473
for exercise_ind in 0 ..progresses. len ( ) {
474
474
match progresses[ exercise_ind] {
475
- ExerciseCheckProgress :: Done => {
475
+ CheckProgress :: Done => {
476
476
self . set_status ( exercise_ind, true ) ?;
477
477
}
478
- ExerciseCheckProgress :: Pending => {
478
+ CheckProgress :: Pending => {
479
479
self . set_status ( exercise_ind, false ) ?;
480
480
if first_pending_exercise_ind. is_none ( ) {
481
481
first_pending_exercise_ind = Some ( exercise_ind) ;
482
482
}
483
483
}
484
- ExerciseCheckProgress :: None | ExerciseCheckProgress :: Checking => {
484
+ CheckProgress :: None | CheckProgress :: Checking => {
485
485
// If we got an error while checking all exercises in parallel,
486
486
// it could be because we exceeded the limit of open file descriptors.
487
487
// Therefore, try running exercises with errors sequentially.
488
- progresses[ exercise_ind] = ExerciseCheckProgress :: Checking ;
488
+ progresses[ exercise_ind] = CheckProgress :: Checking ;
489
489
progress_visualizer. update ( & progresses) ?;
490
490
491
491
let exercise = & self . exercises [ exercise_ind] ;
492
492
let success = exercise. run_exercise ( None , & self . cmd_runner ) ?;
493
493
if success {
494
- progresses[ exercise_ind] = ExerciseCheckProgress :: Done ;
494
+ progresses[ exercise_ind] = CheckProgress :: Done ;
495
495
} else {
496
+ progresses[ exercise_ind] = CheckProgress :: Pending ;
496
497
if first_pending_exercise_ind. is_none ( ) {
497
498
first_pending_exercise_ind = Some ( exercise_ind) ;
498
499
}
499
- progresses[ exercise_ind] = ExerciseCheckProgress :: Pending ;
500
500
}
501
501
self . set_status ( exercise_ind, success) ?;
502
-
503
502
progress_visualizer. update ( & progresses) ?;
504
503
}
505
504
}
0 commit comments