E4213

E4213#

Compiler diagnostic name: constr_for_non_struct.

构造方法只能为 struct 类型定义。

MoonBit 的 Type::new 构造机制属于结构体。枚举、newtype 以及其他类型形式已经有各自的构造语法,因此为这些类型定义构造方法会被拒绝。

错误示例#

enum Status {
  Ready
}

fn Status::new() -> Status {
  Ready
}

Statusenum,不是 struct,因此 Status::new 不能用作结构体构造方法。

建议#

直接使用枚举构造器;如果确实需要自定义构造方法,则将该类型改为 struct

struct Status {}

fn Status::new() -> Status {
  Status::{  }
}