summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormokou <mokou@fastmail.com>2021-04-21 16:21:56 +0200
committermokou <mokou@fastmail.com>2021-04-21 16:21:56 +0200
commit347f30bd867343c5ace1097e085a1f7e356553f7 (patch)
tree0ee87c22c2f98c92c817397141b0bf81ab144eb1 /src
parent6177b6e126852027b689ebab4e0796b2984f987b (diff)
fix(main): Let find_exercise work with borrows
Diffstat (limited to 'src')
-rw-r--r--src/main.rs14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index 5af5feb..a95a09d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -201,13 +201,13 @@ fn main() {
}
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));
}
Subcommands::Hint(subargs) => {
- let exercise = find_exercise(subargs.name, exercises);
+ let exercise = find_exercise(&subargs.name, &exercises);
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 {
- let matching_exercise = |e: &Exercise| name == e.name;
-
+fn find_exercise<'a>(name: &str, exercises: &'a [Exercise]) -> &'a Exercise {
exercises
- .into_iter()
- .find(matching_exercise)
+ .iter()
+ .find(|e| e.name == name)
.unwrap_or_else(|| {
- println!("No exercise found for your given name!");
+ println!("No exercise found for '{}'!", name);
std::process::exit(1)
})
}