我嘗試使用下面收集到字符串VEC生鏽:收集到所有的字符串擁有VEC生鏽
let fields : ~[~str] = row.split_str(",").collect();
我得到以下錯誤:預期的std :: ITER :: FromIterator < &海峽>,但發現的std :: ITER :: FromIterator <〜STR>(STR存儲有所不同:預計&
但發現~
)
我曾嘗試使用類型提示,但沒有成功
我嘗試使用下面收集到字符串VEC生鏽:收集到所有的字符串擁有VEC生鏽
let fields : ~[~str] = row.split_str(",").collect();
我得到以下錯誤:預期的std :: ITER :: FromIterator < &海峽>,但發現的std :: ITER :: FromIterator <〜STR>(STR存儲有所不同:預計&
但發現~
)
我曾嘗試使用類型提示,但沒有成功
.split_str
返回iterator over &str
slices,即它返回row
數據的子視圖。借來的&str
不是一個擁有~str
:使這項工作,無論是收集到~[&str]
,或者,每個&str
複製到~str
收集前:
let first: ~[&str] = row.split_str(",").collect();
let second: ~[~str] = row.split_str(",").map(|s| s.to_owned()).collect();
FWIW,如果你分裂在單字符謂詞,那麼split
會更有效率(例如在這種情況下爲row.split(',')
)。
另外,我建議你upgrade to a more recent version of Rust,0.11是最近才發佈,但在Nightlies版推薦的安裝目標(改變0.10
到0.11
或在相應的文檔上面的文檔鏈接master
)。
隨着夜間,上述兩個片段將被寫成:
let first: Vec<&str> = row.split(',').collect();
let second: Vec<String> = row.split(',').map(|s| s.to_string()).collect();
(。最後,如果你與&str
與~str
又名String
,I wrote up some details a while ago的區別掙扎)
謝謝!是的,我正在升級和改變我的語法。 – rdmcfee
什麼你使用的是什麼版本的Rust? – huon