981377660LMT / ts

ts学习
6 stars 1 forks source link

"turbofish"语法 #577

Open 981377660LMT opened 2 months ago

981377660LMT commented 2 months ago

"turbofish"语法是Rust中的一种语法,用于在调用泛型函数时明确指定泛型参数的类型,而不是让编译器自动推断。这种语法看起来像是::<>,其中::后面跟着尖括号<>,尖括号内是具体的类型参数。

这种语法通常用在编译器无法自动推断出正确的类型时,或者当存在多种可能的类型推断时,为了明确指定期望的类型。它被戏称为"turbofish"是因为::<>看起来像是一条带有尖尖的鱼。

例如,在使用collect方法将迭代器中的元素收集到一个特定类型的集合时,如果不使用"turbofish"语法,编译器可能无法推断出你想要收集到的具体集合类型。此时,可以使用"turbofish"语法来明确指定目标集合的类型。

let numbers = vec![1, 2, 3];

// 使用"turbofish"语法明确指定collect方法的目标类型为Vec<i32>
let doubled: Vec<i32> = numbers.iter().map(|x| x * 2).collect::<Vec<i32>>();

在这个例子中,::<Vec<i32>>就是"turbofish"语法,它明确指定了collect方法应该将元素收集到一个Vec<i32>类型的向量中。这样做可以避免类型推断的不确定性,确保代码的正确性。