2015-05-30 14 views
10

docs for Option, Option, Some<T> ve None türevleri içeren bir numaradır.Neden Seçeneklerin Bazıları ve Hiçbiri varyantlarının kalifiye olmaları gerekmiyor?

Neden onları değerlendirmeksizin Some ve None başvuruyorsunuz?

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

Ancak bu derlenmeyecektir:

Örneğin, bu iyi çalışır

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

derleyici hata otomatik olarak sokulur unresolved enum variant, struct or const `Bar`

cevap

14

Rust prelude olduğu Her kaynak dosyada şu satırı içerir:

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

Option ve her ikisi de kapsamdaki varyantlarını getirir.

+0

Mükemmel, teşekkürler. – krixon

+0

Bilmek için çok yararlı, teşekkürler! –

İlgili konular