2015-03-13 135 views
5

在迭代元组数组时,Rust为什么不解构元组?例如:为什么迭代元组数组时,元组不能解构?

let x: &[(usize, usize)] = &[...]; 

for (a,b) in x.iter() { 
    ... 
} 

导致错误:

error: type mismatch resolving `<core::slice::Iter<'_, (usize, usize)> as core::iter::Iterator>::Item == (_, _)`: 
expected &-ptr, 
found tuple [E0271] 

回答

13

的问题是,你的模式(a, b)(usize, usize)类型的元组,而你的迭代器返回的元组引用(即&(usize, usize)),所以typechecker正确地抱怨。

您可以通过添加在你的模式的&,这样解决这个问题:

for &(a,b) in x.iter() {