为什么Option的Some和None变体不需要合格?

时间:2015-05-30 13:14:31

标签: rust

根据docs for OptionSome<T>是包含变体NoneSome的枚举。

为什么可以在没有限定条件的情况下引用Nonelet x = Option::Some(5); match x { Some(a) => println!("Got {}", a), None => println!("Got None"), }

例如,这很好用:

enum Foo<T> {
    Bar(T),
    Baz,
}
let x = Foo::Bar(5);
match x {
    Bar(a) => println!("Got {}", a),
    Baz => println!("Got Baz"),
}

但这无法编译:

unresolved enum variant, struct or const `Bar`

编译器的错误是 $scope.selectedAll = { all: false};

1 个答案:

答案 0 :(得分:16)

Rust prelude自动插入到每个源文件中,包含以下行:

pub use option::Option::{self, Some, None};

带来Option及其变体的范围。