我已经看过
Vec<_>
好几次了。例如:
let a = "line1\r\nline2\nline3";
println!("{:?}", a.lines().collect::<Vec<_>>());
但是那张“不确定的脸”
<_>
是什么意思?
我已经习惯了尖括号中的类型名称,但那会是什么类型呢? 我所知道的下划线的唯一含义是来自 Python 作为未使用变量的名称。
意思是“Rust 编译器,推断什么类型进入
Vec
”。它确实类似于 Python 中的未使用变量(以及 Rust 本身),因为它代表一个类型的占位符,就像它可以代表一个变量名的占位符一样。
您可以在Rust编程语言章节中找到有关迭代器消费者的解释:
使用 _ 可以提供部分提示:
这说 “请收集成let one_to_one_hundred = (1..101).collect::<Vec<_>>();
,但请推断Vec<T>
对我来说是什么。”T
是 由于这个原因,有时也被称为“类型占位符”。_