मैं निम्नलिखित है उधार लिया जाता है (पर्याप्त निर्दोष) जंग कोड:अपरिवर्तनीय रूप foo उधार नहीं कर सकते, क्योंकि यह भी रूप में परिवर्तनशील
let file = &Path(some_file_name);
let mut buf = [0u8, ..12];
match io::file_reader(file) {
Ok(reader) => reader.read(buf, buf.len()),
Err(msg) => println(msg)
}
rustc
शिकायत है कि
उधार नहीं कर सकते
buf[]
के रूप में अपरिवर्तनीय है क्योंकि यह है उत्परिवर्तनीय
यदि संबंधित रेखा को
के रूप में उधार लिया गया हैOk(reader) => reader.read(buf, 12),
सभी ठीक काम करेंगे। लेकिन यह कम संतोषजनक है क्योंकि अब बफर की लंबाई कोड में डुप्लिकेट की गई है। हालांकि rustc
शिकायत करते हुए अस्पष्ट रूप से समझते हैं, मैं अभी भी यह तर्क देना चाहता हूं कि rustc
यह अनुमान लगाने में सक्षम होना चाहिए कि len()
एक शुद्ध कार्य है और इसका कोई दुष्प्रभाव नहीं है इसलिए कोड मान्य है। इसके अलावा, यह एक बफर में पढ़ने के लिए एक आम आम पैटन है।
तो यहां बेवकूफ जंग का रास्ता क्या है?
EDIT: कोड जंग 0.8 के लिए था। जैसा कि @pnkfelix ने इंगित किया है, तब से Reader.read
एपीआई बदल दी गई है। इसे अब दूसरे पैरामीटर की आवश्यकता नहीं है।
अपना पूरा कोड प्रदान करने के लिए देखभाल? मैंने आपके कोड के आधार पर कुछ इकट्ठा किया लेकिन मुझे एक अलग त्रुटि मिली। आप जंग का किस संस्करण का उपयोग कर रहे हैं? – asm
बीटीडब्ल्यू, 'पथ' 'पथ' के लिए एक बॉक्स आवंटित कर रहा है, जब कोई पथ सीधे स्टैक पर रख सकता है और इसके लिए सामान्य संदर्भ ले सकता है, उदा। 'और Path'। – huon
एंड्रयू, कोड जंग 0.8 के लिए था। dbaupp, हां वास्तव में। 'और पथ 'बेहतर होगा। – edwardw