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