fn demo_function () -> Result<i32, &'static str> { // 如遇 None 那么发函数会直接返回 None let some_int = foo? } 2.4 【推荐且常用】模式匹配表达式(match, if let) // 使用 match 表达式 match foo { Err(e) => println!("{}", e), // 如果为 Err 打印错误信息 Ok(some_int) =...
let ret = File::open("test.txt");let f = match ret { Ok(file) => file, Err(err) = { panic!("fail to open test.txt, error: {:?}", err ); }} // f.XXXX() (一)工具函数 Result 和Option 非常相似,甚至可以理解为,Result是Option更为通用的版本,在异常的时候,返回了更多的错误信...
letfoo =1;letbar = foo;// immutablefoo =2; read_line()返回一个io::Result io::Result Ok,Err ok表示操作成功 Err表示操作失败,还包括失败的原因 运行结果: 2.2猜数游戏:生成神秘数字 库的网站:https://crates.io/ 比如我们要用生成随机数的库及其介绍 如何添加包 在cargo.toml的dependencies下添加需要...
pubfnfind_user(username:&str)->Result<UserId,std::io::Error>{letf=matchstd::fs::File::open("/etc/passwd"){Ok(f)=>f,Err(e)=>returnErr(e),}; 减少样板代码的关键因素是 Rust 的问号运算符?这段语法糖负责match单个字符中的 Err 分支和 return Err(...) 表达式: pubfnfind_user(username...
match(包括 match处理 Result<T,E>或 match处理Option<>, 或 使用map_err()) 使用if let Some(value)= fn() {} else {} 使用特定的函数:and_then() 和 or_else() 我对Rust的错误处理的印象 Rust的错误处理方式比起Golang更灵活,可以针对错误和当下代码需要赋值前做错误判断、故意忽略异常、异常时打印...
let result = match result_ok { Result::Ok(o) => o, Result::Err(e) => e, }; println!("{}", result); 这里定义了一个"成功"的Result,然后使用模式匹配对其进行处理,如果是Ok的,取出Ok的值,否则取出Err的值。这类简单重复的判断,经常会用到,rust封装了1个等效的方法:unwrap,其内部实现如下:1...
3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相关代码示例。 一、基本数据类型 Rust的基本数据类型包括布尔类型、整数类型、浮点类型和字符类型。
在Rust 标准库中可能产生异常的函数的返回值都是 Result 类型的。例如:当我们尝试打开一个文件时: 实例 usestd::fs::File; fnmain(){ letf=File::open("hello.txt"); matchf{ Ok(file)=>{ println!("File opened successfully."); }, Err(err)=>{ ...
Result 枚举定义大致如下: enumResult<T,E>{Ok(T),Err(E),} 处理Result 的一种方式,match 表达式 举例: usestd::fs::File;fnmain(){letfp=File::open("hello.txt");letfile=matchfp{Ok(file)=>{file},Err(error)=>panic!("文件没找到 {:?} ",error),};} ...
enumFruit{Apple,Banana,Orange,}fnmain(){letfruit:Fruit=Fruit::Apple;match fruit{Fruit::Apple=>println!("It's an apple!"),Fruit::Banana=>println!("It's a banana!"),Fruit::Orange=>println!("It's an orange!"),}} 四、其他数据类型 ...