2015-03-13 42 views
5

Khi lặp qua một loạt các bộ dữ liệu, tại sao Rust không hủy cấu trúc các bộ dữ liệu? Ví dụ:Tại sao các bộ dữ liệu không bị phá hủy khi lặp qua một mảng các bộ dữ liệu?

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

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

dẫn đến các lỗi:

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

Trả lời

13

Vấn đề là mô hình của bạn (a, b) là một tuple loại (usize, usize), trong khi iterator của bạn trả về tham chiếu đến các tuple (tức &(usize, usize)), do đó typechecker đúng phàn nàn.

Bạn có thể giải quyết điều này bằng cách thêm một & trong mô hình của bạn, như thế này:

for &(a,b) in x.iter() { 
Các vấn đề liên quan