इस कार्य के लिए कार्यान्वयन क्या है। निम्नलिखित चेक टाइप करेंगे:मुझे 'बॉक्स' से स्वामित्व वाला मूल्य कैसे प्राप्त होगा?</p> <pre><code>fn unbox<T>(value: Box<T>) -> T { // ??? } </code></pre> <p>प्रलेखन है कि मैं क्या चाहते हैं की तरह लग रहा में केवल समारोह <code>Box::into_raw</code> है:
fn unbox<T>(value: Box<T>) -> T {
*value.into_raw()
}
यह त्रुटि error[E0133]: dereference of raw pointer requires unsafe function or block
देता है। इसे unsafe { ... }
ब्लॉक में लपेटकर इसे ठीक करता है।
fn unbox<T>(value: Box<T>) -> T {
unsafe { *value.into_raw() }
}
क्या यह सही कार्यान्वयन है? यदि हां, तो यह असुरक्षित क्यों है? इसका क्या मतलब है?
शायद यह प्रश्न मेरी सामान्य अनिश्चितता दिखाता है कि कैसे Box
वास्तव में काम करता है।
नोट: आपके प्रस्तावित कार्यान्वयन में, आप 'बॉक्स' द्वारा आवंटित स्मृति को लीक कर रहे हैं। –