如何对包装String的枚举变体进行模式匹配? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对包装String的枚举变体进行模式匹配? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有一个枚举:
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"),
},
}
有没有更短的方法来做到这一点?
答案
我认为唯一的另一种方法是使用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"),
}
以上是关于如何对包装String的枚举变体进行模式匹配? [重复]的主要内容,如果未能解决你的问题,请参考以下文章
sputnikdao2 - ChangePolicy - “数据与未标记枚举 VersionedPolicy 的任何变体都不匹配”