E4213#
Compiler diagnostic name: constr_for_non_struct.
构造方法只能为 struct 类型定义。
MoonBit 的 Type::new 构造机制属于结构体。枚举、newtype 以及其他类型形式已经有各自的构造语法,因此为这些类型定义构造方法会被拒绝。
错误示例#
enum Status {
Ready
}
fn Status::new() -> Status {
Ready
}
Status 是 enum,不是 struct,因此 Status::new 不能用作结构体构造方法。
建议#
直接使用枚举构造器;如果确实需要自定义构造方法,则将该类型改为 struct。
struct Status {}
fn Status::new() -> Status {
Status::{ }
}