Rust Option 和 Result 的处理
Handle
is_ 判断后续表达式成立
_and 表达式同时成立
_or 将 err 替换为默认结果,并拆箱 result
_or_default 将 err 替换为 default 结果
_or_else 将 err 替换为对 err 的操作
_err 对 err 的操作方法
matches! 表达式相等
ok(), err() 结果转取值到 option
操作箱内值
as_ref 箱内值引用
as_mut 箱内值可变
使用箱内值
map 操作后替换原本 result 内的值
map_or 操作后返回变化后的结果
map_or_else 操作后返回变化后的结果
inspect 如果 ok 就执行结果
inspect_err 如果 err 就执行错误
取得箱内值
panic 强退程序
unwrap 默认提示
export 手动提示
拆箱
unwrap_or_default 取值或默认结果
unwrap_or 取值或默认结果
and_ or_ 继续操作并返回这个 result
and_then 如果为 ok 执行后续操作这个 result
and_then 操作 ok 内的值
or 如果为 err 替换 error
or_else 如果为 err 操作 error
contains 比较 result 内的值
map 取得 result 内其中一个位置值,返回 result 对应位置值,
and then,or_else 取得 result 内其中一个位置值,返回一个新的 result
resut 处理
当一个方法返回一个 Result 时,
如果需要将 Result 向上传递,
使用 map_err 将 Result 的 Error 使用 anyhow 的 Error 包裹,(没信息可省略这步)
如果本身就是 anyhow 的 Result,上面这步可简写把 map_err 替换为 context
然后使用 ?解 Result 取到 ok 值,或者将封装后的 Error 向上传递。
如果不需要向上传递,
就使用 or_else 处理 Err(Error) 后返回 Ok,
使用 ?解 Result
常用 Result 方法集合
取 Result 值
unwrap_or_default() 取值要是错误返回默认值
unwarp_or(T t) 取值要是错误返回 t
? 取值要是错误返回错误
Rusult 内部值替换
map
map error
Result 整体修改
and then
or_else
最后更新于