9
我已经看过Vec<_>
几次了。例如:什么是Vec <_>?
let a = "line1\r\nline2\nline3";
println!("{:?}", a.lines().collect::<Vec<_>>());
但是'不确定的脸'<_>
是什么意思?
我已经习惯了在尖括号类型名,但可以说是什么类型的? 我知道的下划线的唯一含义是来自Python,作为未使用变量的名称。
我已经看过Vec<_>
几次了。例如:什么是Vec <_>?
let a = "line1\r\nline2\nline3";
println!("{:?}", a.lines().collect::<Vec<_>>());
但是'不确定的脸'<_>
是什么意思?
我已经习惯了在尖括号类型名,但可以说是什么类型的? 我知道的下划线的唯一含义是来自Python,作为未使用变量的名称。
这意味着“锈编译器,推断进入Vec
什么类型”。它确实类似于Python中的未使用变量(以及Rust本身),因为它表示一个类型的占位符,就像它可以表示变量名的占位符。
你可以找到解释锈病编程语言章约iterator consumers:
使用_会让您提供部分提示:
let one_to_one_hundred = (1..101).collect::<Vec<_>>();
这是说 “收集成Vec<T>
,请,但推断什么T
是给我的。“_
是 有时称为“类型占位符”出于这个原因。
谢谢!由于某些原因,文档中的泛型章节没有提及任何有关参数类型推断的内容。 – Amomum
是否有任何特别关于'_'语法的文档?我找不到任何。在解释迭代器时,我只能找到使用它的地方。 – Lii
@Li我认为这是目前唯一提到的地方。 github上记录该功能的问题已经关闭,并将该段添加到迭代器部分:https://github.com/rust-lang/rust/pull/22293 –