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


Rust array.map用法及代码示例


本文简要介绍rust语言中 array.map 的用法。

用法

pub fn map<F, U>(self, f: F) -> [U; N] where    F: FnMut(T) -> U,

返回与 self 大小相同的数组,函数 f 按顺序应用于每个元素。

如果您不一定需要新的固定大小数组,请考虑改用 Iterator::map

关于性能和堆栈使用的注意事项

不幸的是,这种方法的使用目前并不总是尽可能地优化。这主要涉及大型数组,因为在小型数组上的映射似乎已经优化得很好。另请注意,在调试模式下(即没有任何优化),此方法可能会使用大量堆栈空间(数组大小的几倍或更多)。

因此,在performance-critical 代码中,尽量避免在大型数组上使用此方法或检查发出的代码。还要尽量避免链式映射(例如 arr.map(...).map(...) )。

在许多情况下,您可以通过在阵列上调用 .iter().into_iter() 来改用 Iterator::map [T; N]::map 仅在您确实需要与结果大小相同的新数组时才需要。 Rust 的惰性迭代器往往得到很好的优化。

例子

let x = [1, 2, 3];
let y = x.map(|v| v + 1);
assert_eq!(y, [2, 3, 4]);

let x = [1, 2, 3];
let mut temp = 0;
let y = x.map(|v| { temp += 1; v * temp });
assert_eq!(y, [1, 4, 9]);

let x = ["Ferris", "Bueller's", "Day", "Off"];
let y = x.map(|v| v.len());
assert_eq!(y, [6, 9, 3, 3]);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 array.map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。