我有一個程序,其中我fold
字符串的向量,增加一個值,並建立另一個向量。事情是這樣的:什麼是非破壞性地向矢量附加值的慣用方式?
struct Widget { foo: isize, text: &'static str }
let foos = vec!["a", "b", "c"];
let (final, ws) = foos.iter().fold((0, widgets), |(x, ws), text| {
(x+1, Widget { foo: x, text: text })
});
與上面的代碼的問題是,我需要追加新的小工具,ws
,不到位的ws
返回新的widget。爲此,我需要一種非破壞性地向矢量附加值的方法。這裏的簽名,大致的功能我在尋找:
fn append<T>(vec: Vec<T>, item: T) -> Vec<T>
我似乎無法找到這樣的功能。看起來這個(或作爲Vec
上的一個方法)對於Rust來說非常習慣,但它不在那裏。有沒有另外一種更通俗的方式來實現它,或者是否有像上面這樣的函數?
我沒了解清楚。 – Stargateur
你能否通過非破壞性的方式闡明你的意思? – Shepmaster
'fold'似乎並不是這裏的正確工具。你應該使用'enumerate'生成'x'索引,'map'然後用'collect'來創建小部件的向量。 – interjay