Optionunwrap

上个例子展示了如何主动地引入程序失败(program failure)。当公主收到蛇这件不合适 的礼物时,我们就让程序 panic。但是,如果公主期待收到礼物,却没收到呢?这同样 是一件糟糕的事情,所以我们要想办法来解决这个问题!

我们可以检查空字符串(""),就像处理蛇那样。但既然我们在用 Rust,不如 让编译器辨别没有礼物的情况。

在标准库(std)中有个叫做 Option<T>(option 中文意思是 “选项”)的枚举 类型,用于有 “不存在” 的可能性的情况。它表现为以下两个 “option”(选项)中 的一个:

  • Some(T):找到一个属于 T 类型的元素
  • None:找不到相应元素

这些选项可以通过 match 显式地处理,或使用 unwrap 隐式地处理。隐式处理要么 返回 Some 内部的元素,要么就 panic

请注意,手动使用 expect 方法自定义 panic 信息是可能的,但相比显式 处理,unwrap 的输出仍显得不太有意义。在下面例子中,显式处理将举出更受控制的 结果,同时如果需要的话,仍然可以使程序 panic

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX