or_else 处理一个Result并返回一个Result,当前是某种错误时,通过传入的op方法,处理错误;如果是非错误类型,则不受影响。 pub fn or_else<F, O: FnOnce(E) -> Result<T, F>>(self, op: O) -> Result<T, F> { match self { Ok(t) => Ok(t), Err(e) => op(e), } } or_else 通常用于...
use std::error::Error; use std::fs::File; fn main() -> Result<(), Box<dyn Error>> { let f = File::open("hello.txt")?; Ok(()) } Box<dyn Error> 被称为 “trait 对象”(“trait object”),第十七章 “为使用不同类型的值而设计的 trait 对象” 部分会做介绍。目前可以理解 Box...
在错误处理方面,Rust采用了一种独特而富有特色的策略,即通过Result类型和Panic机制来管理程序中的错误和异常。 Result类型 Result类型是Rust中处理错误的一种主要方式。在Rust中,函数执行的结果通常被封装在Result枚举中,它有两个可能的值:Ok和Err。Ok表示函数成功执行并返回了期望的结果,而Err则表示函数执行过程中出现...
注意与Option枚举一样,Result枚举和其成员也被导入到了 prelude 中,所以就不需要在match分支中的Ok和Err之前指定Result::。 这里我们告诉 Rust 当结果是Ok时,返回Ok成员中的file值,然后将这个文件句柄赋值给变量f。match之后,我们可以利用这个文件句柄来进行读写。 match的另一个分支处理从File::open得到Err值的情况。
unwrap()函数可以看出 Result 中类型,可能是Ok,也可能是Err。如果 Result 中包裹的类型是Ok,那么unwrap()则返回它的值。如果 Result 中的类型是Err,unwrap()则会让程序崩溃。 你也可以用expect()函数像下方这样来处理 Result: Copy letmy_number:f64= my_string.trim().parse().expect(“Parse failed”);...
首先让我们看看函数的返回值:Result<String, io::Error>。这意味着函数返回一个Result<T, E>类型的值,其中泛型参数T的具体类型是String,而E的具体类型是io::Error。如果这个函数没有出任何错误成功返回,函数的调用者会收到一个包含String的Ok值 —— 函数从文件中读取到的用户名。如果函数遇到任何错误,函数的调...
示例9-4:使用match表达式处理可能的Result成员 注意与Option枚举一样,Result枚举和其成员也被导入到了 prelude 中,所以就不需要在match分支中的Ok和Err之前指定Result::。 这里我们告诉 Rust 当结果是Ok时,返回Ok成员中的file值,然后将这个文件句柄赋值给变量f。match之后,我们可以利用这个文件句柄来进行读写。
下面是一个示例,演示了如何使用Result类型处理错误: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 fndivide(x:i32,y:i32)->Result<i32,&'staticstr>{ify==0{Err("除数不能为零")}else{Ok(x/y)}}fnmain(){matchdivide(10,2){Ok(result)=>println!("结果:{}",result),Err(error)=>println...
Rust Result.into_ok用法及代码示例本文简要介绍rust语言中 core::result::Result.into_ok 的用法。 用法 pub fn into_ok(self) -> T 返回包含的 Ok 值,但从不Panics。与 unwrap 不同,众所周知,此方法不会对其实现的结果类型产生Panics。因此,它可以用来代替unwrap 作为可维护性保障,如果稍后将Result 的错误...
#![feature(result_into_ok_or_err)] let ok: Result = Ok(3); let err: Result = Err(4); assert_eq!(ok.into_ok_or_err(), 3); assert_eq!(err.into_ok_or_err(), 4); 相关用法 Rust Result.into_ok用法及代码示例 Rust Result.into_err用法及代码示例 Rust Result.is_err用法及代码...