E4018#
无法为给定类型解析特征。
错误示例:#
///|
trait HasDefault {
f(Self) -> Unit = _
}
///|
impl HasDefault with f(_) {
}
///|
struct S(Int)
///|
test {
let s : S = S(3)
let _ = Show::to_string(s)
HasDefault::f(s)
}
在上述例子中,试图在类型 S 上调用 Show 特征的方法 to_string 以及 HasDefault 特征的方法 f,但由于 S 没有实现这些特征,会有如下错误:
Type S does not implement trait Show: no `impl` is defined
Type S does not implement trait HasDefault: no `impl` is defined
提示
对于一个所有方法均有默认实现的特征,依然需要一个显示的实现声明。
建议#
给类型 S 实现 Show 特征和 HasDefault 特征:
///|
impl HasDefault for S
///|
impl Show for S with output(s, logger) {
s.0.output(logger)
}