E4201

E4201#

编译器诊断名称:struct_constr_inconsistent_impl

结构体构造器的实现必须与 struct 中的构造器声明具有相同的参数类型和返回类型。签名不同的方法不是该构造器的实现。

错误示例#

///|
priv struct Point {
  x : Int

  fn new(Int) -> Point
}

///|
fn Point::new(text : String) -> Point {
  { x: text.length() }
}

建议#

修改构造器声明或 Type::new 实现,使两者的签名保持一致。

///|
priv struct Point {
  x : Int

  fn new(Int) -> Point
}

///|
fn Point::new(x : Int) -> Point {
  { x, }
}

///|
test {
  let point = Point(2)
  inspect(point.x, content="2")
}