如何表示缺失值或无效值?

时间:2017-11-03 14:21:14

标签: types rust

由于Rust没有None / null / nil值,如何在数组中表示缺失值或无效值?

1 个答案:

答案 0 :(得分:3)

这都是discussed in The Rust Programming Language。请确保您仔细阅读该书;花了很多时间来解决新人的许多问题和担忧。

  

由于Rust没有None

我不确定你为什么这么说,考虑到Option(以及Option::None}是 key 一块Rust。事实上,导入in the prelude非常重要。

如果您想要一个包含一个“缺失”值的数组:

let color = [Some(255), None, Some(255)];

在许多语言中,使用nil / null的概念,每个值都可以是您希望它的类型特殊类型为nil / null。在Rust中不是这样 - FooOption<Foo>是不同的类型,您不能“忘记”处理缺失的值:

let sum = color[0] + color[1];
error[E0369]: binary operation `+` cannot be applied to type `std::option::Option<{integer}>`
 --> src/main.rs:4:15
  |
4 |     let sum = color[0] + color[1];
  |               ^^^^^^^^^^^^^^^^^^^
  |
  = note: an implementation of `std::ops::Add` might be missing for `std::option::Option<{integer}>`

你必须使用模式匹配Option上的帮助方法(在内部进行模式匹配)来“解包”值并清楚地处理Some和{ {1}}个案例。

另见: