當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Vec.resize_with用法及代碼示例


本文簡要介紹rust語言中 std::vec::Vec.resize_with 的用法。

用法

pub fn resize_with<F>(&mut self, new_len: usize, f: F) where    F: FnMut() -> T,

就地調整 Vec 的大小,使 len 等於 new_len

如果 new_len 大於 len ,則 Vec 由差異擴展,每個額外的插槽都填充調用閉包 f 的結果。 f 的返回值將按照它們生成的順序出現在 Vec 中。

如果 new_len 小於 len ,則 Vec 將被截斷。

此方法使用閉包在每次推送時創建新值。如果您希望 Clone 給定值,請使用 Vec::resize 。如果你想使用 Default trait 來生成值,你可以傳遞 Default::default 作為第二個參數。

例子

let mut vec = vec![1, 2, 3];
vec.resize_with(5, Default::default);
assert_eq!(vec, [1, 2, 3, 0, 0]);

let mut vec = vec![];
let mut p = 1;
vec.resize_with(4, || { p *= 2; p });
assert_eq!(vec, [2, 4, 8, 16]);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::vec::Vec.resize_with。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。