如何在Rust中导入和引用枚举类型?

quu*_*x00 10 rust

如何从Rust std lib导入和引用枚举类型?

我正在尝试使用模块中的Ordering枚举std::sync::atomics.到目前为止,我的尝试都以失败告终:

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);    
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Rust v.9.

Ser*_*zko 10

现在(17.11.14之后的每晚构建)枚举必须像

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

pub enum Foo {
    A,
    B,
}

fn main() {
    let a = A;
}
Run Code Online (Sandbox Code Playgroud)

要么

pub enum Foo {
    A,
    B,
}

fn main() {
    let a = Foo::A;
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*gan 8

枚举变体不在enum中; 因此std::sync::atomics::Relaxed,&c.

Scoped枚举变体是https://github.com/mozilla/rust/issues/10090的主题,目前的决定是它们不会出现在1.0之前,如果有的话.