主要观点:在编程中,事情常出错,程序也如此,如函数调用无答案时需妥善处理。良好的 API 设计应考虑这些情况,Rust 中可用Option
和Result
类型来设计友好易用的 API。
关键信息:
Option
表示可能有答案也可能没有,返回值为None
(无数据返回)或Some(x)
(结果是x
)。- 可使用
match
、if let
、?
运算符等处理Option
。unwrap
在能保证有Some
答案时使用,expect
可使错误信息更详细。 Result
类似Option
,有Ok(x)
(答案是x
)和Err(e)
(因错误e
无法得到答案)两种变体,可通过match
或?
处理。- 有时函数只需处理错误,可用不含
Ok
变体的Result
。 - Rust 的
Option
和Result
类型能在编译时检测到未正确处理可选性和结果性的问题,提升编程效率和安全性。
重要细节: - 在“first element of an empty list”示例中,用
Option
类型让函数返回列表元素类型的Option
。 if let
表达式可在Option
为Some
时执行代码,let...else
形式在Option
为None
时执行特定操作。?
运算符可将None
值直接返回给调用者。- 在处理
Result
时,match
用于显式处理两种可能,?
用于将错误传播给调用者。 - 对于只处理错误的函数,可用不含
Ok
变体的Result
。 - Rust 类型
()
表示“此处无内容”。 - 不同语言处理错误的方式不同,Rust 的
Option
和Result
类型较为优雅,能在编译时检测问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。