【发布时间】:2020-02-02 03:39:49
【问题描述】:
如果我有一个没有self 作为参数的方法的结构,我可以通过SomeStruct::method() 调用该方法。我似乎无法对从特征定义的方法做同样的事情。例如:
trait SomeTrait {
fn one_trait() -> uint;
}
struct SomeStruct;
impl SomeStruct {
fn one_notrait() -> uint {
1u
}
}
impl SomeTrait for SomeStruct {
fn one_trait() -> uint {
1u
}
}
#[test]
fn testing() {
SomeStruct::one_trait(); // doesn't compile
SomeStruct::one_notrait(); // compiles
}
编译器给出错误“unresolved name 'SomeStruct::one_trait.'”
如何直接调用 struct 的 trait 方法实现?
【问题讨论】:
-
(这不是一个精确重复,但它肯定涵盖了相同的领域,并且在 UFCS 出现之前,如果没有变通方法,你根本无法做到这一点的答案是正确的。)
-
“不编译”变量的错误信息是什么? (最好包含精确的编译器输出,这样每个人都在完全相同的页面上。:))
-
当然。我将编辑问题以添加编译器错误。
-
克里斯的回答仍然成立。目前不可调用(直到 UFCS 登陆)
标签: rust