什么是Vec <_>?

Amo*_*mum 13 generics rust

我已经见过Vec<_>几次了.例如:

let a = "line1\r\nline2\nline3";
println!("{:?}", a.lines().collect::<Vec<_>>());
Run Code Online (Sandbox Code Playgroud)

但那个"不确定的面孔" <_>是什么意思呢?

我已习惯尖括号中的类型名称,但这可以是什么类型?我所知道的下划线的唯一含义是来自Python作为未使用变量的名称.

Pao*_*lla 14

它的意思是"Rust编译器,推断出什么类型进入Vec".它确实类似于Python中的未使用变量(以及Rust本身),因为它代表一个类型的占位符,就像它可以表示变量名称的占位符一样.

您可以在The Rust Programming Language一章中找到有关迭代器使用者的解释:

使用_将允许您提供部分提示:

let one_to_one_hundred = (1..101).collect::<Vec<_>>();这说:"请收集Vec<T>一下,但要推断出T对我来说是什么." _因此,有时称为"类型占位符".

  • 谢谢!出于某种原因,文档中的泛型章节没有提及有关参数类型推断的任何内容. (2认同)