什么是 Vec<_>?

问题描述 投票:0回答:1

我已经看过

Vec<_>
好几次了。例如:

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

但是那张“不确定的脸”

<_>
是什么意思?

我已经习惯了尖括号中的类型名称,但那会是什么类型呢? 我所知道的下划线的唯一含义是来自 Python 作为未使用变量的名称。

generics rust syntax
1个回答
40
投票

意思是“Rust 编译器,推断什么类型进入

Vec
”。它确实类似于 Python 中的未使用变量(以及 Rust 本身),因为它代表一个类型的占位符,就像它可以代表一个变量名的占位符一样。

您可以在Rust编程语言章节中找到有关迭代器消费者的解释:

使用 _ 可以提供部分提示:

let one_to_one_hundred = (1..101).collect::<Vec<_>>();
这说 “请收集成
Vec<T>
,但请推断
T
对我来说是什么。”
_
是 由于这个原因,有时也被称为“类型占位符”。

© www.soinside.com 2019 - 2024. All rights reserved.