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

SomeTrait::<T>::method()

但是我不明白那和
<SomeTrait<T>>::method()

在C++中,我期望这样:
SomeTrait<T>::method()

这两个不同吗?他们俩似乎都在<T>上调用了methodSomeTrait特化。

最佳答案

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

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

  • <SomeTrait<T>>称为fully qualified syntax
  • SomeTrait::<T>称为turbofish表示法(非官方名称)。
  • 关于generics - Trait::<T>和<Trait <T >>有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59140724/

    10-12 05:50