根据文档Option,Option是一个变体Some<T>和枚举None.
为什么可以引用Some和None不引用它们?
例如,这工作正常:
let x = Option::Some(5);
match x {
Some(a) => println!("Got {}", a),
None => println!("Got None"),
}
Run Code Online (Sandbox Code Playgroud)
但这无法编译:
enum Foo<T> {
Bar(T),
Baz,
}
let x = Foo::Bar(5);
match x {
Bar(a) => println!("Got {}", a),
Baz => println!("Got Baz"),
}
Run Code Online (Sandbox Code Playgroud)
编译器的错误是 unresolved enum variant, struct or const `Bar`
Lev*_*ans 16
的锈前奏,其被自动插入到每个源文件,包含此行:
pub use option::Option::{self, Some, None};
Run Code Online (Sandbox Code Playgroud)
这带来Option了它的变体范围.