我想要以下两个枚举。但是,由于LargestMagnitudeSmallestMagnitude的“重复定义”,因此以下代码无法编译。

enum SymmetricWhich {
    LargestMagnitude,
    SmallestMagnitude,
    LargestAlgebraic,
    SmallestAlgebraic,
    BothEnds,
}

enum NonsymmetricWhich {
    LargestMagnitude,
    SmallestMagnitude,
    LargestRealPart,
    SmallestRealPart,
    LargestImaginaryPart,
    SmallestImaginaryPart,
}

如何避免重复定义?有什么方法不需要重命名其中之一的枚举值吗?我考虑了将重复值移动到第三个枚举(在下面给出为CommonWhich)的可能性,希望我可以从中“派生”为基类,但是我尚不清楚Rust是否(或如何)支持这一点。
enum CommonWhich {
    LargestMagnitude,
    SmallestMagnitude,
}

最好的进行方法是什么?

最佳答案

目前在枚举中没有任何这种子类型化;所有变体仅是一种具体类型,您要尝试做的是不可能的。

您将需要重命名变体以使它们保持不相交,或者将枚举放置在不同的模块中。

10-07 16:17
查看更多