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


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