Rust想要这个UFCS调用的注释类型是什么?

时间:2015-12-19 18:44:46

标签: rust traits

对不起,我可能遗漏了超级明显的东西。我想知道为什么我不能像这样调用我的特质方法。这不应该是标准的UFCS。

trait FooPrinter {
    fn print ()  {
        println!("hello");
    }
}

fn main () {
    FooPrinter::print();
}

围栏:http://is.gd/ZPu9iP

我收到以下错误

error: type annotations required: cannot resolve `_ : FooPrinter`

1 个答案:

答案 0 :(得分:3)

如果没有指定要调用它的实现,则无法调用特征方法。该方法具有默认实现并不重要。

实际的UFCS调用如下所示:

trait FooPrinter {
    fn print()  {
        println!("hello");
    }
}

impl FooPrinter for () {}

fn main () {
    <() as FooPrinter>::print();
}

playground

如果您不需要此方法的多态性,请将其移至structenum,或使其成为全局函数。