fix(main): Let find_exercise work with borrows
This commit is contained in:
parent
6177b6e126
commit
347f30bd86
14
src/main.rs
14
src/main.rs
@ -201,13 +201,13 @@ fn main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Subcommands::Run(subargs) => {
|
Subcommands::Run(subargs) => {
|
||||||
let exercise = find_exercise(subargs.name, exercises);
|
let exercise = find_exercise(&subargs.name, &exercises);
|
||||||
|
|
||||||
run(&exercise, verbose).unwrap_or_else(|_| std::process::exit(1));
|
run(&exercise, verbose).unwrap_or_else(|_| std::process::exit(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
Subcommands::Hint(subargs) => {
|
Subcommands::Hint(subargs) => {
|
||||||
let exercise = find_exercise(subargs.name, exercises);
|
let exercise = find_exercise(&subargs.name, &exercises);
|
||||||
|
|
||||||
println!("{}", exercise.hint);
|
println!("{}", exercise.hint);
|
||||||
}
|
}
|
||||||
@ -285,14 +285,12 @@ fn spawn_watch_shell(failed_exercise_hint: &Arc<Mutex<Option<String>>>) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_exercise(name: String, exercises: Vec<Exercise>) -> Exercise {
|
fn find_exercise<'a>(name: &str, exercises: &'a [Exercise]) -> &'a Exercise {
|
||||||
let matching_exercise = |e: &Exercise| name == e.name;
|
|
||||||
|
|
||||||
exercises
|
exercises
|
||||||
.into_iter()
|
.iter()
|
||||||
.find(matching_exercise)
|
.find(|e| e.name == name)
|
||||||
.unwrap_or_else(|| {
|
.unwrap_or_else(|| {
|
||||||
println!("No exercise found for your given name!");
|
println!("No exercise found for '{}'!", name);
|
||||||
std::process::exit(1)
|
std::process::exit(1)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user