Rust:枚举中的名称字段

问题描述 投票:0回答:1

是否可以命名或以其他方式描述 Rust 中

enum
的字段?

让我们看一下这段代码:

enum Move {
    Capture(Piece, Piece, (i8, i8), (i8, i8)),
    ...
}

这些值的含义可能并不明显,在这种情况下,第一块是我的块,它捕获了第二块,从而从第一个位置 (

(i8, i8)
) 移动到第二个位置。

理想的情况是这样的:

enum Move {
    Capture(piece: Piece, captured: Piece, from: (i8, i8), to: (i8, i8)),
    ...
}

遗憾的是这不起作用。

有什么方法可以让我的

enum
更具描述性(除了评论之外)?

rust enums
1个回答
14
投票

您可以使用嵌入式结构,例如:

enum Move {
    Capture{piece: Piece, captured: Piece, from: (i8, i8), to: (i8, i8)},
    ...
}

或者更好的是,将它们带到外面,您可以在它们之上实现方法,然后将其嵌入到枚举中:

struct Capture{piece: Piece, captured: Piece, from: (i8, i8), to: (i8, i8)};

impl Capture {
    ...
}

enum Move {
    Capture(Capture),
    ...
}

© www.soinside.com 2019 - 2024. All rights reserved.