rust - Unwrap_or_else 无法从 Path 获取扩展
问题描述
我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
单独使用。
解决方案
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(|| ...);
推荐阅读
- javascript - 在 Django 中使用 XMLHttpRequest 的进度上传栏问题
- javascript - 处理从外部服务器发送的 URL 的最佳方法是什么?
- python - LinearSVC 中“penalty”和“loss”的含义
- php - 我可以在 laravel-lighthouse 中抛出自定义错误吗
- python - NameError:名称“aic”未在 Arima 模型中定义
- facebook - Facebook像素域验证的同一域的多个验证
- sql - 使用 SQL 检索具有一定数量行的“页面”
- powershell - Powershell Invoke-WebRequest 返回 (401) Unauthorized
- mongodb - Mongodb $nin 不适用于嵌套数组
- python - 导出 Whatsapp 聊天