当所有变体属于同一类型时,解开枚举

时间:2019-03-19 11:45:49

标签: enums rust

考虑这样的枚举定义:

enum Money {
    USD(u32),
    EUR(u32),
    CHF(u32),
    // many more...
}

请注意,所有枚举变量的类型均为u32

fn amount(money: Money) -> u32 {
    // ?
}

我是否可以一般性地提取u32实例中包含的包装的Money而不在所有情况下都匹配,如果可以,怎么办?

1 个答案:

答案 0 :(得分:11)

不幸的是,没有内置的方法可以做到这一点。通常的方法是创建一个访问器方法:

impl Money {
    pub fn amount(&self) -> u32 {
        match *self {
            Money::USD(amount) => amount,
            Money::EUR(amount) => amount,
            Money::CHF(amount) => amount,
        }
    }
}

至少这样,您只需要做一次。

相关问题