这是一个非常初级的问题,但我在搜索了半个小时后没有找到有用的信息。我有Rust 1.7.0版本和以下代码:
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
。 - wimhfor i in 0..3
比提出的其他选择更易读。 - Paolo Falabella