E4001

E4001#

结构体字段的可见性不兼容。

以下可见性组合是允许的:

  • 公开结构体和公开字段,虽然这会产生一个警告 E1008

  • 公开结构体和私有字段。

  • 私有结构体和私有字段,虽然也会产生 E1008 警告。

错误示例:#

priv struct S {
  pub field: Int
}

这个例子在一个私有结构体中声明了一个公开可见性的字段,这是不允许的,会在第 2 行报错:

一个公开字段不能在私有结构体中声明。

建议#

将字段的可见性修改至与结构体的可见性匹配:

priv struct S {
  field: Int
}

我们可以将 field: Int 改为 priv field: Int,但这并不是必要的,因为私有结构体中的所有字段默认都是私有的。