Я использую unwrap_or_else
для обработки ошибок. Следующий код не будет компилироваться:
use std::{path::Path, process::abort};
fn example() {
Path::new("<path>").extension().unwrap_or_else(|err| {
println!("{} {}", "", err);
abort();
});
}
error[E0593]: closure is expected to take 0 arguments, but it takes 1 argument
--> src/lib.rs:4:37
|
4 | Path::new("<path>").extension().unwrap_or_else(|err| {
| ^^^^^^^^^^^^^^ ----- takes 1 argument
| |
| expected closure that takes 0 arguments
Код, подобный этому, не имеет проблем:
let input_file_reader = fs::File::open("<path>").unwrap_or_else(|err| {
println!("{} {}", "", err);
abort();
});
Я попытался посмотреть примеры, посмотреть Path
и посмотреть Общая структура замыкания, но я не мог понять, почему unwrap_or_else
не будет работать только с Path::extension
.