मुझे ऐसा लगता है कि Rc<>
बस, एक सूचक है, जो एक निश्चित आकार है से मिलकर चाहिए ताकि प्रकार ही है, Sized
और इसलिए Copy
होना चाहिए ना?
यह बिल्कुल सही नहीं है। Rc
आर वरीयता सी के लिए छोटा है। इसका अर्थ यह है कि इस प्रकार का ट्रैक ट्रैक करता है कि कितने संदर्भ स्वामित्व वाले डेटा को इंगित करते हैं। इस तरह हम एक साथ कई मालिकों है और सुरक्षित रूप से डेटा मुक्त, एक बार संदर्भ गिनती 0.
तक पहुँच जाता है लेकिन हम संदर्भ काउंटर वैध और नवीनतम जानकारी रखना कर सकते हैं? वास्तव में, जब भी कोई नया संदर्भ/मालिक बनाया जाता है और जब भी कोई संदर्भ/स्वामी हटा दिया जाता है तो हमें कुछ करना पड़ता है। विशेष रूप से, हमें पूर्व मामले में काउंटर को बढ़ाना होगा और बाद में इसे कम करना होगा।
काउंटर को Drop
, जंगली के विनाश के बराबर लागू करके कम किया गया है। यह drop()
फ़ंक्शन निष्पादित किया जाता है जब भी एक चरणीय दायरे से बाहर हो जाता है - हमारे लक्ष्य के लिए बिल्कुल सही।
लेकिन हम वृद्धि कब करते हैं? आपने अनुमान लगाया: clone()
में। The Copy
trait, परिभाषा हो, का कहना है कि एक प्रकार बस को कॉपी बिट्स द्वारा दोहराया जा सकता है:
प्रकार कि बस को कॉपी बिट्स से कॉपी किया जा सकता है (यानी memcpy
)।
यह हमारे मामले में सच नहीं है, क्योंकि: हाँ, हम "बिट्स कॉपी करें", लेकिन हम अतिरिक्त काम भी करते हैं! हमें हमारे संदर्भ काउंटर को बढ़ाने की जरूरत है!
स्रोत
2016-10-13 07:29:23