实际上 Rust 的错误处理是完美的 —— Bitfield Consulting

主要观点:在编程中,事情常出错,程序也如此,如函数调用无答案时需妥善处理。良好的 API 设计应考虑这些情况,Rust 中可用OptionResult类型来设计友好易用的 API。
关键信息:

  • Option表示可能有答案也可能没有,返回值为None(无数据返回)或Some(x)(结果是x)。
  • 可使用matchif let?运算符等处理Optionunwrap在能保证有Some答案时使用,expect可使错误信息更详细。
  • Result类似Option,有Ok(x)(答案是x)和Err(e)(因错误e无法得到答案)两种变体,可通过match?处理。
  • 有时函数只需处理错误,可用不含Ok变体的Result
  • Rust 的OptionResult类型能在编译时检测到未正确处理可选性和结果性的问题,提升编程效率和安全性。
    重要细节:
  • 在“first element of an empty list”示例中,用Option类型让函数返回列表元素类型的Option
  • if let表达式可在OptionSome时执行代码,let...else形式在OptionNone时执行特定操作。
  • ?运算符可将None值直接返回给调用者。
  • 在处理Result时,match用于显式处理两种可能,?用于将错误传播给调用者。
  • 对于只处理错误的函数,可用不含Ok变体的Result
  • Rust 类型()表示“此处无内容”。
  • 不同语言处理错误的方式不同,Rust 的OptionResult类型较为优雅,能在编译时检测问题。
阅读 14
0 条评论