我想要以下两个枚举。但是,由于 LargestMagnitude
和 SmallestMagnitude
的“重复定义”,以下代码无法编译。
enum SymmetricWhich {
LargestMagnitude,
SmallestMagnitude,
LargestAlgebraic,
SmallestAlgebraic,
BothEnds,
}
enum NonsymmetricWhich {
LargestMagnitude,
SmallestMagnitude,
LargestRealPart,
SmallestRealPart,
LargestImaginaryPart,
SmallestImaginaryPart,
}
如何避免这种重复定义?有没有什么方法不需要重命名其中一个枚举值?我考虑了将重复值移动到第三个枚举的可能性(下面给出为 CommonWhich
),希望我可以从 is 作为基类“派生”,但我不清楚是否(或者如何)Rust 支持这一点。
enum CommonWhich {
LargestMagnitude,
SmallestMagnitude,
}
最好的方法是什么?
最佳答案
目前枚举中没有任何此类子类型;所有变体都属于一种具体类型,您想要做的事情是不可能的。
您需要重命名变体以使它们保持不相交,或者将枚举放置在不同的模块中。
关于enums - 如何在 Rust 中定义 "overlapping"枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226571/