本文简要介绍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 array.split_array_ref用法及代码示例
- Rust array.zip用法及代码示例
- Rust array.split_array_mut用法及代码示例
- Rust array.each_mut用法及代码示例
- Rust array.each_ref用法及代码示例
- Rust array用法及代码示例
- Rust args用法及代码示例
- Rust args_os用法及代码示例
- Rust assert_ne用法及代码示例
- Rust assert_matches用法及代码示例
- Rust addr_of_mut用法及代码示例
- Rust alloc_zeroed用法及代码示例
- Rust align_of用法及代码示例
- Rust always_abort用法及代码示例
- Rust assert_eq用法及代码示例
- Rust available_parallelism用法及代码示例
- Rust addr_of用法及代码示例
- Rust abort用法及代码示例
- Rust align_of_val用法及代码示例
- Rust assert用法及代码示例
- Rust alloc用法及代码示例
- Rust align_of_val_raw用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 array.map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。