2014-01-24 31 views
7

如何從Rust std lib中導入和引用枚舉類型?如何導入和引用Rust中的枚舉類型?

我正在嘗試使用std::sync::atomics模塊中的Ordering枚舉。 我嘗試到目前爲止都以失敗而告終:

use std::sync::atomics::AtomicBool; 
use std::sync::atomics::Ordering; 

// error unresolved import: there is no `Relaxed` in `std::sync::atomics::Ordering` 
// use std::sync::atomics::Ordering::Relaxed; 

fn main() { 
    let mut ab = AtomicBool::new(false); 
    let val1 = ab.load(Ordering::Relaxed); // error: unresolved import: 
              // there is no `Relaxed` in `std::sync::atomics::Ordering` 
    println!("{:?}", val1); 

    ab.store(true, Ordering.Relaxed);  // error: unresolved name `Ordering` 
    let val2 = ab.load(Ordering(Relaxed)); // error: unresolved name `Relaxed` 
    println!("{:?}", val2);  
} 

我目前使用的防鏽v 0.9。

回答

8

枚舉變量不在枚舉範圍內;他們因此是std::sync::atomics::Relaxed,& c。

作用域枚舉變體是https://github.com/mozilla/rust/issues/10090的主題,對於這個變體,目前的決定是它們不會在1.0之前出現,如果有的話。

4

查閱(每日構建後14年11月17日)枚舉必須像

pub use self::Foo::{A, B}; 

pub enum Foo { 
    A, 
    B 
} 

fn main() { 
    let a = A; 
} 

pub enum Foo { 
    A, 
    B 
} 

fn main() { 
    let a = Foo::A; 
} 
可以使用