答案 0 :(得分:14)
此构造称为turbofish。如果搜索此语句,您将发现它的定义和用法。
尽管 Rust编程语言的第一版已经过时,但我认为this particular section比second book更好。
引用第二版:
path::<...>
,method::<...>
指定表达式中泛型类型,函数或方法的参数;通常称为turbofish(例如"42".parse::<i32>()
)
您可以在编译器无法推断出类型参数的任何情况下使用它,例如
fn main () {
let a = (0..255).sum();
let b = (0..255).sum::<u32>();
let c: u32 = (0..255).sum();
}
a
不起作用,因为它不能推断出变量类型。
b
之所以起作用,是因为我们直接用turbofish语法指定了type参数。
c
确实有效,因为我们直接指定了c
的类型。