理解基本定义
1. 首先Option是一个rust标准库的一个枚举类,他存在的目的就是为了null值,既不存在的值,go/java都有nil null的存在,于是rust使用option none来表示。
enum Option<T> {
Some(T),
None,
}
if let来判断枚举类型
if let 匹配值 = 源变量 {
语句块
}
fn main() {
enum Book {
Papery(u32),
Electronic(String)
}
let book = Book::Electronic(String::from("url"));
if let Book::Papery(index) = book { // if let Option::Some(t) = xx 同理
println!("Papery {}", index);
} else {
println!("Not papery book");
}
}
2.任何一门语言都需要错误处理,go里面有error,java里面有异常,rust用枚举类result来进行错误处理。
pub enum Result<T, E> {
Ok(T),
Err(E),
}
一些常用实现方法参考rust doc
结合and_then map_or的使用示例
result, option均实现了and_then map_or func,当返回result<option<t>>嵌套使用时,可如下使用
self.xxxx() // 返回值为result<option<t>>, and_then即当返回为ok时,not err
.and_then(|m|m.map_or(default,|m1|self.xxx(m1)))
.and_then...
用于业务处理存在先后级关系,当前面result ok继续,可使用这种表达方式
本文介绍了Rust编程语言中的Option枚举用于表示可能不存在的值,以及如何使用iflet进行匹配。同时讲解了Result枚举用于错误处理,展示了and_then和map_or在处理嵌套返回值时的应用,强调了在业务流程中的顺序执行。
1048

被折叠的 条评论
为什么被折叠?



