对不起,我可能遗漏了超级明显的东西。我想知道为什么我不能像这样调用我的特质方法。这不应该是标准的UFCS。
trait FooPrinter {
fn print () {
println!("hello");
}
}
fn main () {
FooPrinter::print();
}
我收到以下错误
error: type annotations required: cannot resolve `_ : FooPrinter`
答案 0 :(得分:3)
如果没有指定要调用它的实现,则无法调用特征方法。该方法具有默认实现并不重要。
实际的UFCS调用如下所示:
trait FooPrinter {
fn print() {
println!("hello");
}
}
impl FooPrinter for () {}
fn main () {
<() as FooPrinter>::print();
}
如果您不需要此方法的多态性,请将其移至struct
或enum
,或使其成为全局函数。