Skip to content

Commit 347f30b

Browse files
committed
fix(main): Let find_exercise work with borrows
1 parent 6177b6e commit 347f30b

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/main.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,13 @@ fn main() {
201201
}
202202

203203
Subcommands::Run(subargs) => {
204-
let exercise = find_exercise(subargs.name, exercises);
204+
let exercise = find_exercise(&subargs.name, &exercises);
205205

206206
run(&exercise, verbose).unwrap_or_else(|_| std::process::exit(1));
207207
}
208208

209209
Subcommands::Hint(subargs) => {
210-
let exercise = find_exercise(subargs.name, exercises);
210+
let exercise = find_exercise(&subargs.name, &exercises);
211211

212212
println!("{}", exercise.hint);
213213
}
@@ -285,14 +285,12 @@ fn spawn_watch_shell(failed_exercise_hint: &Arc<Mutex<Option<String>>>) {
285285
});
286286
}
287287

288-
fn find_exercise(name: String, exercises: Vec<Exercise>) -> Exercise {
289-
let matching_exercise = |e: &Exercise| name == e.name;
290-
288+
fn find_exercise<'a>(name: &str, exercises: &'a [Exercise]) -> &'a Exercise {
291289
exercises
292-
.into_iter()
293-
.find(matching_exercise)
290+
.iter()
291+
.find(|e| e.name == name)
294292
.unwrap_or_else(|| {
295-
println!("No exercise found for your given name!");
293+
println!("No exercise found for '{}'!", name);
296294
std::process::exit(1)
297295
})
298296
}

0 commit comments

Comments
 (0)