我有这样的代码。
#[derive(PartialEq)]
enum FALUDA {
Juice,
Ice,
}
let a: u32 = 0;
if a == FALUDA::Juice {
//Yay
}
字符串
如果我尝试这个代码,我得到下面的错误。
78 | if a == FALUDA::Juice {
| -------- ^^^^^^^^^^^^^ expected `u32`, found `FALUDA`
| |
| expected because this is `u32`
型
我不想投。
2条答案
按热度按时间ht4b089n1#
您需要将枚举值转换为
u32
(a
的类型)。下面是一个完整的例子:
字符串
对于简单的情况下铸造真的是所有一个应该需要的。但是如果你需要做很多从/到枚举值的转换,你可以考虑使用crate,比如strum_macros。
wwtsj6pe2#
-- * 我们能用match实现什么吗?*
是的,您可以为
u32
实现PartialEq<FALUDA>
:字符串
但是如果你决定改变
FALUDA
的变体的顺序,这可能会证明是不稳定的。