我可以使用其他值扩展枚举吗?

时间:2014-08-09 00:28:41

标签: enums rust

如果我有一组带有一组值的枚举,有没有办法可以用相同的变体加上更多的枚举创建第二个枚举?

// From this
enum Base {
    Alpha,
    Beta(usize),
}

// To this, but without copy & paste
enum Extended {
    Alpha,
    Beta(usize),
    Gamma,
}

1 个答案:

答案 0 :(得分:17)

枚举不能直接扩展,但你使用与结构一起使用的相同合成技巧(也就是说,使用结构,可以有一个字段存储' parent的实例&# 39。)

enum Extended {
    Base(Base),
    Gamma
}

如果您希望单独处理每个案例,那么就像

一样使用
match some_extended {
    Base(Alpha) => ...,
    Base(Beta(x)) => ...,
    Gamma => ...
}

但您也可以共享/重新使用" parent"

中的代码
match some_extended {
    Base(base) => base.do_something(),
    Gamma => ...,
}