2015-05-30 8 views
10

Zgodnie z docs for Option, Option jest wylicznikiem z wariantami Some<T> i None.Dlaczego warianty Niektóre i Żadne opcji nie muszą być kwalifikowane?

Dlaczego można odwoływać się do Some i None bez ich kwalifikowania?

Na przykład, to działa prawidłowo:

let x = Option::Some(5); 
match x { 
    Some(a) => println!("Got {}", a), 
    None => println!("Got None"), 
} 

Ale to nie skompilować:

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

Błąd z kompilatora jest unresolved enum variant, struct or const `Bar`

Odpowiedz

14

Rust prelude, który jest automatycznie wstawiony każdy plik źródłowy zawiera tę linię:

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

Który przynosi Option i oba warianty w zakresie.

+0

Doskonale, dziękuję. – krixon

+0

Bardzo przydatne, aby wiedzieć, dziękuję! –

Powiązane problemy