与枚举

时间:2016-05-02 14:15:46

标签: rust

我有一个枚举:

pub enum Enum1 {
    A(String),
    B(i64),
    C(f64)
}

如何对A进行模式匹配?也就是说,我想得到它的String值。我试过这个:

match optionMyEnum {
  Some(A(x: String)) => ...

并且有很多编译错误。

1 个答案:

答案 0 :(得分:5)

The Rust Programming Language有一整个section on matching。我高度鼓励您阅读该部分(以及整本书)。这篇文档花了很多时间和精力。

您只需指定要绑定的名称即可。没有必要写出类型:

pub enum Enum {
    A(String),
    B(i64),
    C(f64),
}

fn main() {
    let val = Enum::A("hello".to_string());

    match val {
        Enum::A(x) => println!("{}", x),
        _ => println!("other"),
    }
}

在许多情况下,您需要将引用绑定到值:

Enum::A(ref x) => println!("{}", x),