他们是一样的吗?我有时可以看到文档将它们用作相等的方式。
let mut opt: Option<i32>; // type
opt = Some(1); // constructor
opt = None; // other constructor
match opt {
Some(x) => {
// pattern
println!("Got {}", x);
}
None => {
// other pattern
println!("Got nothing");
}
}
Option
类型的定义如下:
enum Option<T> {
None,
Some(T),
}
Option
类型可以有 None
或 Some
值。
match {}
它,由于match
表达式必须是全面的,因此您必须显式处理None
分支。 - dwernerSome
,那么说它返回一个Option
并不是错误的,因为Some
就是一个Option
。 - LeeOption <...>
的值。但这个类型过于宽泛(它是迭代器特性所要求的),因此你所提到的部分告诉读者: 返回值始终是某个blah
的Some(blah)
值,从不是None
。就像说“这个函数总是返回 0”。0 不是一个类型,它是一个值,但这个语句仍然有意义。 - user395760