我具有以下一般特征:
trait A<T> {
fn foo(&self) -> T;
}
我有以下结构,它为A
和String
实现了特征usize
:
struct S;
impl A<String> for S {
fn foo(&self) -> String {
String::from("Hello world")
}
}
impl A<usize> for S {
fn foo(&self) -> usize {
37
}
}
当我调用方法foo
时,可以为变量指定类型,并且可以正常工作:
let value: usize = s.foo();
但是我如何用turbofish运算符做同样的事情?
我尝试了以下操作,但没有成功:
let text = s::<usize>.foo();
let text = s.foo::<usize>();
let text = s.::<usize>foo();
如何使用此运算符代替为变量提供类型?
答案 0 :(得分:4)
您无法执行此操作,因为“ turbofish”运算符是用于为某物指定通用参数的语法,但是您的方法不是通用的,即使它是在通用特性中定义的,因此没有要指定的通用参数。
您可以做的是使用fully qualified syntax明确命名该特征,该特征是 通用的:
let text = A::<usize>::foo(&s);