Use the NotFound variant of the IO error

This commit is contained in:
mo8it 2024-03-25 02:41:45 +01:00
parent 83cd91ccca
commit e4520602f5

View file

@ -91,15 +91,6 @@ fn main() {
println!("\n{WELCOME}\n"); println!("\n{WELCOME}\n");
} }
if !Path::new("info.toml").exists() {
println!(
"{} must be run from the rustlings directory",
std::env::current_exe().unwrap().to_str().unwrap()
);
println!("Try `cd rustlings/`!");
std::process::exit(1);
}
if !rustc_exists() { if !rustc_exists() {
println!("We cannot find `rustc`."); println!("We cannot find `rustc`.");
println!("Try running `rustc --version` to diagnose your problem."); println!("Try running `rustc --version` to diagnose your problem.");
@ -107,7 +98,15 @@ fn main() {
std::process::exit(1); std::process::exit(1);
} }
let info_file = fs::read_to_string("info.toml").unwrap(); let info_file = fs::read_to_string("info.toml").unwrap_or_else(|e| {
match e.kind() {
io::ErrorKind::NotFound => println!(
"The program must be run from the rustlings directory\nTry `cd rustlings/`!",
),
_ => println!("Failed to read the info.toml file: {e}"),
}
std::process::exit(1);
});
let exercises = toml_edit::de::from_str::<ExerciseList>(&info_file) let exercises = toml_edit::de::from_str::<ExerciseList>(&info_file)
.unwrap() .unwrap()
.exercises; .exercises;