這是一個絕對的初學者問題,但在搜索半小時後我找不到任何有用的東西。我有鏽跡1.7.0和驗證碼:如何添加兩個Rust數組元素?
type coord = [i64; 3];
// add two coordinates ("vectors") pointwise, that is
// if z = add(a, b) then z[i] = a[i] + b[i] for i=0..2
fn add(a: coord, b: coord) -> coord {
//???
}
我第一次嘗試的明顯的一點就是a.zip(b).map(|(u,v)| u+v)
但這並不工作(無法壓縮陣列),也不a.iter().zip(b.iter()).map(|(u,v)| u+v)
,因爲它不能轉換迭代器回到數組。我可以看到爲什麼這一般不起作用,但在這種情況下,我們知道兩個事物的長度是相同的。
現在我在做
fn add(a: coord, b: coord) -> coord {
let mut z: coord = [0, 0, 0];
for i in 0..2 {
z[i] = a[i] + b[i];
}
z
}
但相比之下長相醜陋。我錯過了什麼?
注意,'0..2'應該是'0。 .3'在你的代碼中。 – wimh
「醜陋」是主觀的,但我發現明確的'對於0..3中的i'比建議的替代方案更可讀 –