首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unwrap_or_else无法从路径中获取扩展

Unwrap_or_else无法从路径中获取扩展
EN

Stack Overflow用户
提问于 2020-03-09 02:07:04
回答 1查看 716关注 0票数 1

我使用unwrap_or_else进行错误处理。以下代码无法编译:

代码语言:javascript
复制
use std::{path::Path, process::abort};

fn example() {
    Path::new("<path>").extension().unwrap_or_else(|err| {
        println!("{} {}", "", err);
        abort();
    });
}
代码语言:javascript
复制
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

这样的代码没有问题:

代码语言:javascript
复制
let input_file_reader = fs::File::open("<path>").unwrap_or_else(|err| {
    println!("{} {}", "", err);
    abort();
});

我试着看一些例子,看看Path,看看一般的闭包结构,但是我不明白为什么unwrap_or_else不能单独使用Path::extension

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 02:10:25

代码语言:javascript
复制
pub fn open<P: AsRef<Path>>(path: P) -> Result<File>;
代码语言:javascript
复制
pub fn extension(&self) -> Option<&OsStr>;

一个返回一个Result,另一个返回一个Option。当没有扩展时,结果就是简单的None。传递给回调没有错误。

代码语言:javascript
复制
let input_file_reader = fs::File::open("<path>").unwrap_or_else(|| ...);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60593915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档