当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。