2015-03-13 3 views
5

जब टुपल्स की एक सरणी पर पुनरावृत्त होता है, तो जंग जंगलों को क्यों नष्ट नहीं करता है? उदाहरण के लिए:tuples की सरणी पर पुनरावृत्ति करते समय tuples क्यों संरचित नहीं होते हैं?

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), जबकि अपनी इटरेटर tuples के लिए संदर्भ (यानी &(usize, usize)) रिटर्न प्रकार (usize, usize) की एक टपल है, इसलिए है टाइपशेकर सही शिकायत करता है।

आप इस तरह अपने पैटर्न में एक & जोड़ने, द्वारा इस का समाधान कर सकते हैं:

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