特征中的静态函数可以调用相同特征中的另一个静态函数吗? 假设我具有以下特征:
trait Test {
fn prt() {
println!("ok");
}
fn test() {
Test::prt();
}
}
那是行不通的。代码只是不能在这里编译。
此外,我没有类型可以使用完全限定的语法,例如<T as Test>::Test
。还有另一种方法吗?
答案 0 :(得分:1)
在特征定义中,可以使用Self
来引用实现特征的类型。对于您来说,它看起来像:
trait Test {
fn prt() {
println!("ok");
}
fn test() {
Self::prt();
}
}
实际上没有像Test::test
这样的方法,因为它的主体始终由trait的实现定义。碰巧的是,如果实现者不提供自己的主体,则默认情况下将获得该主体。