E4010#
pub is not allowed on default implementation for traits. The default
implementation has the same visibility as the trait itself.
Erroneous Example#
pub(open) trait Stringer {
stringify(Self) -> String = _
}
pub impl Stringer with stringify(_self) { "hey" }
In the example above, the pub keyword is used on the default implementation of
the Stringer trait, which is not allowed.
Suggestion#
Remove the pub keyword so that the default implementation has the same
visibility as the trait itself:
pub(open) trait Stringer {
stringify(Self) -> String = _
}
impl Stringer with stringify(_self) { "hey" }