का उपयोग कर take_while मैं एक नया cautious_take_while
आपरेशन कि take_while
IteratorExt
से की तरह, लेकिन पहले विफल रही है आइटम लेने के बिना काम करता है के लिए आधार के रूप में Peekable
उपयोग करना चाहते हैं। (यह एक अच्छा विचार है कि यह एक अच्छा विचार है, और क्या जंग में इस लक्ष्य को पूरा करने के बेहतर तरीके हैं - मैं उस दिशा में संकेतों के लिए खुश रहूंगा, लेकिन ज्यादातर मैं समझने की कोशिश कर रहा हूं कि मेरा कोड कहां है तोड़ना)।को लागू करने के लिए एक "सतर्क" Peekable
एपीआई मैं सक्षम करने के लिए कोशिश कर रहा हूँ मूल रूप से है:
let mut chars = "abcdefg.".chars().peekable();
let abc : String = chars.by_ref().cautious_take_while(|&x| x != 'd');
let defg : String = chars.by_ref().cautious_take_while(|&x| x != '.');
// yielding (abc = "abc", defg = "defg")
मैं creating a MCVE here देने का प्रयास कर लिया है, लेकिन मैं हो रही है:
:10:5: 10:19 error: cannot move out of borrowed content :10 chars.by_ref().cautious_take_while(|&x| x != '.');
जहां तक मेरा बता सकते हैं , मैं अपने फ़ंक्शन हस्ताक्षर के संदर्भ में जंग के अपने TakeWhile
के समान पैटर्न का पालन कर रहा हूं, लेकिन मैं उधार चेकर से अलग-अलग व्यवहार देख रहा हूं। क्या कोई यह बता सकता है कि मैं क्या गलत कर रहा हूं?
धन्यवाद @rodrigo! मैंने http://is.gd/NalTYL पर एक कार्य उदाहरण बनाने के लिए अपना पहला सुझाव शामिल किया है। लेकिन जब मैं टाइपिंग को स्ट्रिप में लाने की कोशिश करता हूं, जैसे कि http://is.gd/6c64vf में, मुझे 'त्रुटि मिलती है: विशेषता * कोर :: क्लोन :: क्लोन * प्रकार * और म्यूट कोर के लिए लागू नहीं किया गया है: : iter :: Peekable * ', जिसे मैं लाइन 43 में विशेषता सीमाओं में' + क्लोन' जोड़कर दूर नहीं लग सकता। –
Bosh
@ बॉश। यकीन नहीं है, लेकिन मुझे लगता है कि एक परिवर्तनीय सूचक को क्लोन नहीं किया जा सकता है। आपका संस्करण 'क्लोन' को स्वीकार करता है क्योंकि संभवतः 'पिकेबल' स्पष्ट रूप से 'क्लोन' को इम्प्लांट करता है। शायद आप वही कर सकते हैं, लेकिन कोड को कुछ रिफैक्टरिंग की आवश्यकता होगी ... – rodrigo
ग्रेट। मैंने 'क्लोन 'से निकलने से रोक दिया और समय सीमा साफ कर दी: http://is.gd/ljjJAE। आपकी मदद के लिए फिर से धन्यवाद + स्पष्टीकरण! – Bosh