我已经多次看到 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的类型。” 因此,_ 有时被称为“类型占位符”。
_
语法的具体文档?我找不到任何相关资料。我只能在迭代器解释时找到使用它的文本。 - Lii