由于Rust没有None
/ null
/ nil
值,如何在数组中表示缺失值或无效值?
答案 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中不是这样 - Foo
和Option<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}}个案例。
另见: