本文介绍了对于这个 UFCS 调用,Rust 想要什么类型的注释?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
抱歉,我可能遗漏了一些超级明显的内容.我想知道为什么我不能像这样调用我的 trait 方法.这不应该是标准的UFCS吗.
Sorry, I'm probably missing something super obvious. I wonder why I can't call my trait method like this. Shouldn't this be the standard UFCS.
trait FooPrinter {
fn print () {
println!("hello");
}
}
fn main () {
FooPrinter::print();
}
婴儿围栏:http://is.gd/ZPu9iP
我收到以下错误
error: type annotations required: cannot resolve `_ : FooPrinter`
推荐答案
如果不指定要调用的实现,则无法调用 trait 方法.该方法是否具有默认实现并不重要.
You cannot call a trait method without specifying on which implementation you wish to call it. It doesn't matter that the method has a default implementation.
实际的 UFCS 调用如下所示:
An actual UFCS call looks like this:
trait FooPrinter {
fn print() {
println!("hello");
}
}
impl FooPrinter for () {}
fn main () {
<() as FooPrinter>::print();
}
如果您不需要此方法的多态性,请将其移至 struct
或 enum
,或使其成为全局函数.
If you don't need polymorphism on this method, move it to a struct
or enum
, or make it a global function.
这篇关于对于这个 UFCS 调用,Rust 想要什么类型的注释?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!