E4214

E4214#

Compiler diagnostic name: cannot_extend_non_extensible_enum.

只有 extenum 声明可以被扩展。

普通 enum 声明是封闭的:它的所有构造器都必须出现在原始声明中。如果需要之后再添加构造器,请一开始就将该类型声明为 extenum

错误示例#

pub enum Event {
  Started
}

pub extenum Event += {
  Stopped
}

这段代码尝试扩展一个普通 enum

建议#

先单独声明公开的 extenum 类型,再通过扩展添加其初始构造器。

pub extenum Event

pub(all) extenum Event += {
  Started
}

pub extenum Event += {
  Stopped
}

pub fn all() -> (Event, Event) {
  (Started, Stopped)
}