LingKang的Rust学习日记1 - Option,Result以及and_then,map_or使用

本文介绍了Rust编程语言中的Option枚举用于表示可能不存在的值,以及如何使用iflet进行匹配。同时讲解了Result枚举用于错误处理,展示了and_then和map_or在处理嵌套返回值时的应用,强调了在业务流程中的顺序执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

理解基本定义

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继续,可使用这种表达方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值