2015-05-30 3 views
10

docs for Option के अनुसार, Option वेरिएंट Some<T> और None के साथ एक enum है।विकल्प का कुछ और कोई भी संस्करण क्यों योग्य नहीं होना चाहिए?

Some और None को योग्यता के बिना संदर्भित करना क्यों संभव है?

उदाहरण के लिए, इस ठीक काम करता है:

let 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`

उत्तर

14

Rust prelude, जो स्वचालित रूप में डाला जाता है है प्रत्येक स्रोत फ़ाइल में, यह पंक्ति शामिल है:

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

जो Option और दोनों प्रकार के रूपों को दायरे में लाता है।

+0

बिल्कुल सही, धन्यवाद। – krixon

+0

जानना बहुत उपयोगी है, धन्यवाद! –

संबंधित मुद्दे