यह किसी भी भाषा में एक छोटा काम होना चाहिए। यह जंग में काम नहीं कर रहा है।हैशमैप के माध्यम से पुनरावृत्ति कैसे करें, कुंजी/मान मुद्रित करें और जंग में मान को हटा दें?
error[E0382]: use of moved value: `*map`
--> src/main.rs:6:9
|
4 | for (key, value) in map {
| --- value moved here
5 | println!("{}/{}", key, value);
6 | map.remove(key);
| ^^^ value used here after move
|
= note: move occurs because `map` has type `&mut std::collections::HashMap<std::string::String, std::string::String>`, which does not implement the `Copy` trait
क्यों यह एक संदर्भ स्थानांतरित करने के लिए कोशिश कर रहा है:
use std::collections::HashMap;
fn do_it(map: &mut HashMap<String, String>) {
for (key, value) in map {
println!("{}/{}", key, value);
map.remove(key);
}
}
fn main() {}
यहाँ संकलक त्रुटि है? प्रलेखन से, मुझे नहीं लगता था कि संदर्भों पर चलने/उधार लेने पर लागू किया गया है।
मुझे मानचित्र में {कुंजी, मूल्य) के साथ एक ही त्रुटि मिल सकती है {}; मानचित्र में {कुंजी, मान) के लिए {} ', और मुझे नहीं लगता कि यह उत्तर बताता है। –
इसके बारे में सोचने का एक तरीका यह है कि क्या होगा यदि आपने लूप के अंदर 'map.clear() 'कहा था? 'कुंजी 'और' मान' संदर्भ हैं, और वे अब और कुछ भी संदर्भित नहीं करेंगे। उधारकर्ता-चेकर दृष्टिकोण से 'स्पष्ट' और 'निकालें' दोनों का उपयोग 'और mut self'', वे समान हैं। – loganfsmyth
इससे मुझे एक भी मामूली समस्या का सामना करना पड़ा, लेकिन मुझे संदेह है कि विधि कॉल वाक्यविन्यास इस मुद्दे को अस्पष्ट कर रहा है। https://play.rust-lang.org/?gist=ecf6d9bdbe8e1ad99e5fb3c35c402d1c&version=stable –