一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程|

wenli7363

园龄:3年3个月粉丝:7关注:6

【rust】?问号操作符

0 简述

?问号操作符,是一个语法糖。有空再补

1 运用场景

2 一个错误例子

use std::fs::File;
fn main() {
let f = File::open("hello.txt")?;
}

上面这个例子,我第一次看的时候没有理解,因为这是个语句,所以按理来说返回值应该都是()。。。。

但是,仔细分析一下,File::open返回一个Result枚举,之后?对这个枚举进行解析。等价于下面的代码

let f = File::open("hello.txt");
let mut f = match f {
// 打开文件成功,将file句柄赋值给f
Ok(file) => file,
// 打开文件失败,将错误返回(向上传播)
Err(e) => return Err(e),
};

如果打开文件成功,那么会将file赋值给f,如果失败,那么就会直接return,注意是return!!,我当时脑抽以为,把none值赋给f,c++其他语言经常这样,就是返回一个空

因为Return Err(e)的原因,所以这时候返回一个Result结构体,这就和main要求返回()冲突了。

posted @   wenli7363  阅读(491)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起