Trait::<T> 和 <Trait<T>> 有什么区别?

Phi*_*l H 5 generics rust

我有一个类型,我可以通过它的方法访问

SomeTrait::<T>::method()
Run Code Online (Sandbox Code Playgroud)

但我不明白这和

<SomeTrait<T>>::method()
Run Code Online (Sandbox Code Playgroud)

在 C++ 中,我希望这样:

SomeTrait<T>::method()
Run Code Online (Sandbox Code Playgroud)

这两个有区别吗?他们似乎都在调用on的<T>专业化。methodSomeTrait

Fre*_*ios 5

不能使用 C++ 语法,因为它在 Rust 中是一个模棱两可的语法: in SomeTrait<T>::method(),第<一个是小于运算符,还是泛型参数列表的开头?

您引用的两种方法用于消除歧义:

  • <SomeTrait<T>>被称为完全限定语法
  • SomeTrait::<T> 称为 turbofish 符号(非官方名称)。