你的枚举变量和你的结构是两个独立的实体,即使你给了它们相同的名字。
enum Effect {
Passive,
EarnEffect,
ChargeEffect,
}
明确表示枚举可以有 3 个可能的值,没有额外的数据。您可以将数据与枚举变量相关联
enum Effect {
Passive,
// Struct-like syntax
EarnEffect {
amount: i8,
// ...
},
ChargeEffect,
}
或
enum Effect {
Passive,
// Tuple-like syntax
EarnEffect(i8),
ChargeEffect,
}
您需要使用枚举结构变体,或者将您的结构作为元组变体的数据。目前你有一些不匹配的东西。
选项 1
enum Effect {
Passive,
EarnEffect {
amount: i8,
per: Option<Tag>,
},
ChargeEffect,
}
struct Card {
effect: Effect
}
与
Card { effect: Effect::EarnEffect { amount: 1, per: None }}
选项 2
enum Effect {
Passive,
EarnEffect(EarnEffect),
ChargeEffect,
}
struct EarnEffect {
amount: i8,
per: Option<Tag>,
}
struct Card {
effect: Effect
}
与
Card { effect: Effect::EarnEffect(EarnEffect { amount: 1, per: None }) }