Rust中使用量最大的两种抽象。

  • Option
  • Result

前者代表有无的抽象。
后者代表结果的抽象。

Option

  1. pub enum Option<T> {
  2. /// No value
  3. None,
  4. /// Some value `T`
  5. Some(T),
  6. }

Option的方法

  1. impl<T> Option<T> {
  2. }

可以看到这是泛型的标准写法。T就是代表泛型。当然你可以写做T,也可以用其他的名称。可以看到这里对Option的泛型T并没有使用Trait限定。我在上一篇提到没有Trait限定的泛型没有意义。那为什么这里会这么写?其实是应用环境不同。
在通常的情况我们根本不需要使用有无这种极为广泛的抽象概念。

Result

而除了有无这种概念外,结果同样是有着一样一种高级概念。

  1. pub enum Result<T, E> {
  2. Ok(T),
  3. Err(E),
  4. }

结果Result这个enum表达的两种可能性的抽象。可行的,错误的。Result普遍应用于错误处理。