Some、Option、Result
最近学习 Rust 时对它的所有权,借用等概念,包括语法之类的都还算好理解,但碰到 Some、Option、Result 这些,包括语句后面的 ? 号等等着实困惑了一把,不过经过各种资料的翻阅,总算是理解这几样东西的用法及存在的意义,在这里记录一下。
Option
严格的来说,只有 Option 和 Result,Some 只是 Option 的一个值包装类型。
我们先来描述一个普通的场景,在很多语言中,获取一个数据可能会返回 null 也可能会没有数据,拿 java 举个例:
User user = model.getUser();
if (user == null) {
throw new Exception("用户不存在")