如何对包装String的枚举变体进行模式匹配? [重复]

问题描述 投票:2回答:1

我有一个枚举:

enum T {
    A(String),
}

我想匹配此枚举的变量,但此代码不起作用:

match t {
    T::A("a") => println!("a"),
    T::A("b") => println!("b"),
    _ => println!("something else"),
}

我知道我可以这样做,但在我看来它是如此冗长:

match t {
    T::A(value) => match value.as_ref() {
        "a" => println!("a"),
        "b" => println!("b"),
        _ => println!("something else"),
    },
}

有没有更短的方法来做到这一点?

rust pattern-matching
1个回答
2
投票

我认为唯一的另一种方法是使用match guard,但这与你的嵌套匹配版本一样冗长。

match t {
    T::A(ref value) if value == "a" => println!("a"),
    T::A(ref value) if value == "b" => println!("b"),
    _ => println!("something else"),
}
© www.soinside.com 2019 - 2024. All rights reserved.