我使用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。
发布于 2020-03-09 02:10:25
pub fn open<P: AsRef<Path>>(path: P) -> Result<File>;pub fn extension(&self) -> Option<&OsStr>;一个返回一个Result,另一个返回一个Option。当没有扩展时,结果就是简单的None。传递给回调没有错误。
let input_file_reader = fs::File::open("<path>").unwrap_or_else(|| ...);https://stackoverflow.com/questions/60593915
复制相似问题