下面是错误信息:
文章插图
4.Error特征Error特征是定义错误类型行为的内置特征 。Error特征提供了定义自定义错误类型和自定义错误处理的功能 。
下面是定义自定义错误类型的示例,该错误类型表示文件未找到错误 。
use std::error::Error;use std::fmt;use std::io::Read;#[derive(Debug)]struct FileNotFound(String);impl fmt::Display for FileNotFound {fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {write!(f, "File not found: {}", self.0)}}impl Error for FileNotFound {}fn read_file(file_path: &str) -> Result<String, Box<dyn Error>> {let mut file = std::fs::File::open(file_path).map_err(|e| FileNotFound(format!("{}", e)))?;let mut contents = String::new();file.read_to_string(&mut contents)?;Ok(contents)}fn main() {let result = read_file("file.txt");match result {Ok(contents) => println!("{}", contents),Err(e) => println!("Error: {}", e),
自定义错误类型是FileNotFound构件 。该类型含有文件路径,FileNotFound类型实现了Display特征以返回对用户友好的错误消息,并实现了Error特征以表明这是错误类型 。在read_file函数中,FileNotFound错误类型表示文件未找到错误,map_err方法将std::io:: Error转换成FileNotFound错误 。最后,Box<dyn Error>类型允许函数返回实现Error特征的任何类型 。
main函数调用带有文件路径的read_file函数;如果找到文件,将其内容打印输出到控制台 。不然,它打印输出错误消息 。
下面是一个不存在的文件的结果:
文章插图
三、可以依靠Rust的所有权模型来确保程序安全
与Rust出色的错误处理机制相结合,Rust还利用了所有权模型来帮助确保程序是内存安全的 。
Rust在程序运行前的编译时,使用借用检查器确保所有权规则 。
原文链接:https://www.makeuseof.com/rust-error-handling-Approaches/
【全面讲解在Rust中处理错误的有效方法】
推荐阅读
- 嘴上说不在乎,大厂员工已经偷偷卷起了AIGC操作技巧
- ChatGPT之父承认GPT-5并不存在,为什么OpenAI总是这么实诚?
- 在 MyBatis 中模糊查询 like 语句该怎么写
- Google称内部全在用Kotlin搞安卓开发,体验碾压Java
- 如何在自己的电脑里搭建chatGPT
- 科学家揭开元古宙地层“珍珠项链”存在之谜
- 中国最正宗腊肉在哪个地方?看看这4个城市,你的家乡有没有上榜
- 在北方最受欢迎的十大南方美食,品味南方美食文化
- 三山五岳“三山”指哪三山,一个在安徽,一个在江西,一个在浙江
- 鸡肫怎做好吃