E4145#
无法实现封闭特征。
封闭的特征不允许在其他包中实现。使用 pub(open) 使该特性对其他包开放,以便实现。
错误示例#
例如,在模块 username/hello 中存在一个包 a:
a/moon.pkg.json:
{}
a/a.mbt:
pub trait Sealed {
to_int() -> Int
}
而在包 b 中:
b/moon.pkg.json:
{
"import": [
"username/hello/a"
]
}
b/b.mbt:
type A Int
impl @a.Sealed for A with to_int(self : A) -> Int { // Error: Cannot implement trait '@a.Sealed' because it is readonly.
self._
}
建议#
您可以将该特性的可见性更改为 pub(open),以便其他包可以实现它。
pub(open) trait Sealed {
to_int() -> Int
}