本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。