三种解包 | zk

主要观点:在 Rust 代码中经常使用 .unwrap(),但难以记住其使用原因,可将其分为三种语义不同的情况并分别处理,提出新增 ResultOption 的方法来明确语义以避免混淆。
关键信息:

  • 三种 .unwrap() 的情况:类似 panic!()(若无法执行则直接终止)、类似 unreachable!()(错误情况不可能发生)、类似 todo!()(尚未实现错误处理)。
  • 示例:在 Web 服务器代码中用于表示无法处理的情况而直接终止;在静态变量声明中表示错误情况不可能发生;在快速编写的 Rust 代码中表示后续处理错误。
  • 提议:新增 Option::todoOption::unreachableResult::todoResult::unreachable 函数,以明确语义,#[clippy::todo] 等可指出不应进入生产环境的临时 unwrap
  • 关于命名:RFC 提到可命名为 unwrap_todounwrap_unreachable,但作者认为 todo() 本身不致混淆。
    重要细节:在不同场景下 .unwrap() 的具体应用及新增函数的作用和目的等。
阅读 5
0 条评论