मैं निम्नलिखित कोड का टुकड़ा के साथ एक HashMap
में &str
जोड़े का एक वेक्टर परिवर्तित करने के लिए कोशिश कर रहा हूँ:प्रकार मुद्दा इकट्ठा
use std::collections::HashMap;
fn main() {
let pairs = vec!(("foo", "bar"), ("toto", "tata"));
let map: HashMap<&str, &str> = pairs.iter().collect();
println!("{:?}", map);
}
हालांकि संकलन इस त्रुटि के साथ विफल:
<anon>:5:47: 5:56 error: the trait `core::iter::FromIterator<&(&str, &str)>` is not implemented for the type `std::collections::hash::map::HashMap<&str, &str>` [E0277]
<anon>:5 let map: HashMap<&str, &str> = pairs.iter().collect();
हालांकि अगर collect()
पर कॉल करने से पहले .cloned()
जोड़ता है तो सब ठीक काम करता है:
यहां तक कि अगर मैं त्रुटि संदेश को समझने मुझे समझ नहीं आता जहां प्रकार &(&str, &str)
(जंग दस्तावेज में विधि हस्ताक्षर के अनुसार) और क्यों cloned()
फिक्स बुला से आता है (वहाँ प्रकार HashMap<&str, &str>
के लिए विशेषता FromIterator<&(&str, &str)>
का कोई कार्यान्वयन है) इस समस्या।