2015-09-01 6 views
6

कई iterators implement the Clone trait, लेकिन उनमें से कोई भी implement the Copy trait। कम से कम सरल इटरेटर जैसे std:slice::Iter, the Clone implementation वैसे भी एक memcpy की तरह दिखता है, तो Copy क्यों लागू नहीं किया गया है?इटेटरेटर कॉपी करने योग्य क्यों नहीं हैं?

उत्तर

8

PR #20790 से:

यह पीआर भी इटरेटर गैर परोक्ष copyable बनाता है के रूप में इस पुस्तकालयों में सूक्ष्म कीड़े का स्रोत था। आप अभी भी इटेटरेटर की प्रतिलिपि बनाने के लिए clone() का उपयोग कर सकते हैं।

+1

क्या आप इन सूक्ष्म बगों में से एक का उदाहरण प्रदान कर सकते हैं? – Shepmaster

+2

@ शेमपस्टर: मैं किसी के बारे में नहीं सोच सकता। मुझे लगता है कि इसे 'लूप्स' में पारित होने वाले संशोधकों के साथ कुछ करने के लिए कुछ किया गया था, लेकिन संशोधित हो रहा था, लेकिन * मूल * इटरेटर को अनमोडिफाइड छोड़ दिया गया था। –

+1

मैंने पाया [एक उदाहरण] (https://github.com/rust-lang/rust/pull/27186#issuecomment-123390413), आपकी याददाश्त को प्रमाणित करना। – Shepmaster

संबंधित मुद्दे