E4010

E4010#

特性的默认实现不允许使用 pub 关键字。默认实现的可见性与特性本身的可见性相同。

错误示例:#

pub(open) trait Stringer {
  stringify(Self) -> String = _
}

pub impl Stringer with stringify(_self) { "hey" }

在上面的示例中,pub 关键字用于 Stringer 特性的默认实现,这是不允许的。

建议#

移除 pub 关键字,使默认实现与特性本身具有相同的可见性:

pub(open) trait Stringer {
  stringify(Self) -> String = _
}

impl Stringer with stringify(_self) { "hey" }