2015-12-18 59 views
9

我已經看過Vec<_>幾次了。例如:什麼是Vec <_>?

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

但是'不確定的臉'<_>是什麼意思?

我已經習慣了在尖括號類型名,但可以說是什麼類型的? 我知道的下劃線的唯一含義是來自Python,作爲未使用變量的名稱。

回答

10

這意味着「鏽編譯器,推斷進入Vec什麼類型」。它確實類似於Python中的未使用變量(以及Rust本身),因爲它表示一個類型的佔位符,就像它可以表示變量名的佔位符。

你可以找到解釋鏽病編程語言章約iterator consumers

使用_會讓您提供部分提示:

let one_to_one_hundred = (1..101).collect::<Vec<_>>();這是說 「收集成Vec<T> ,請,但推斷什麼T是給我的。「 _是 有時稱爲「類型佔位符」出於這個原因。

+2

謝謝!由於某些原因,文檔中的泛型章節沒有提及任何有關參數類型推斷的內容。 – Amomum

+0

是否有任何特別關於'_'語法的文檔?我找不到任何。在解釋迭代器時,我只能找到使用它的地方。 – Lii

+0

@Li我認爲這是目前唯一提到的地方。 github上記錄該功能的問題已經關閉,並將該段添加到迭代器部分:https://github.com/rust-lang/rust/pull/22293 –