Rust中unwrap和expect的区别

在 Rust 中,unwrap()expect()OptionResult类型(也可能是其他类型)提供的方法,用于从这些类型中获取包含的值。它们的区别在于如何处理潜在的错误。

Option类型为例,unwrap()方法尝试从包装的值中提取实际的值,如果包装值是Some,则返回其中的值;否则,在None的情况下,unwrap()会导致panic,中断程序的运行,显示一个默认的panic消息;

expect()方法和unwrap()方法类似;它接收一个字符串作为参数,当出现panic时,会将该字符串作为panic消息输出;

需要注意的是,滥用这些方法可能会导致程序在错误情况下不受控制地 panic,因此最好是在确定值存在或操作不会失败时使用它们。

fn main(){
    let var1 = Option::Some(5);
    let var2 = Option::None;
    //尝试调用unwrap(),将得到5
    let _a:i32 = var1.unwrap();
    //尝试调用expect()
    //由于是None,将引起panic,并显示自定义消息
    let _b:i32 = var2.expect("failed to get value");
}

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/rust-expect-and-unwrap.html

分类: 计算机技术
推荐阅读:
Python bool()函数 在 Python 中,bool() 是一个内置函数,用于将一个值转换为 bool 类型。bool() 函数返回两个值之一:True 或 False。
Windows10查看产品序列号S/N 对于新购机器一定要确认S/N是否与包装一致,再通过官方途径确认该序列号出厂日期,以避免买到翻新机。
Python str()函数 str() 函数用于将指定的对象转换为字符串类型。如果对象已经是字符串类型,则返回对象本身;否则,会调用对象的 __str__() 方法来进行转换。
Pyside6 allWidgets()函数详细教程 PySide6.QtWidgets.QApplication类的成员函数allWidgets()用于返回一个包含所有小部件对象的列表;
Rust中的数据类型 在本文中,将介绍Rust中的整型、浮点型、布尔类型、字符类型、元组类型、数组类型的声明和简单使用方法;
关闭Shell时保持子进程继续运行 在Linux系统里,当你关闭 shell 或者终端时,没有经过 nohup 或 setid 等命令后台执行的程序也会随着 shell 的关闭而结束;如果你已经提交了命令,也没有使用 nohup 或 setid 进行处理,你可以用这一条命令实现退出shell或终端而保持进程不被关闭: