我想要以下两个枚举。但是,由于LargestMagnitude
和SmallestMagnitude
的“重复定义”,因此以下代码无法编译。
enum SymmetricWhich {
LargestMagnitude,
SmallestMagnitude,
LargestAlgebraic,
SmallestAlgebraic,
BothEnds,
}
enum NonsymmetricWhich {
LargestMagnitude,
SmallestMagnitude,
LargestRealPart,
SmallestRealPart,
LargestImaginaryPart,
SmallestImaginaryPart,
}
如何避免重复定义?有什么方法不需要重命名其中之一的枚举值吗?我考虑了将重复值移动到第三个枚举(在下面给出为
CommonWhich
)的可能性,希望我可以从中“派生”为基类,但是我尚不清楚Rust是否(或如何)支持这一点。enum CommonWhich {
LargestMagnitude,
SmallestMagnitude,
}
最好的进行方法是什么?
最佳答案
目前在枚举中没有任何这种子类型化;所有变体仅是一种具体类型,您要尝试做的是不可能的。
您将需要重命名变体以使它们保持不相交,或者将枚举放置在不同的模块中。