如果我有一组带有一组值的枚举,有没有办法可以用相同的变体加上更多的枚举创建第二个枚举?
// From this
enum Base {
Alpha,
Beta(usize),
}
// To this, but without copy & paste
enum Extended {
Alpha,
Beta(usize),
Gamma,
}
答案 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 => ...,
}