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

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

考虑这样的枚举定义:

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

请注意,所有枚举变体都是u32类型。

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

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

enums rust
1个回答
11
投票

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

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

至少这种方式你只需要做一次。

© www.soinside.com 2019 - 2024. All rights reserved.