मैंने देखा है कि ?Sized
, कुछ कार्यों (borrow
, borrow_state
, और borrow_mut
) के लिए प्रकार पैरामीटर T
पर एक बाध्य है, हालांकि, यह है नहींnew
या into_inner
के लिए एक समयबद्ध। यदि मैं RefCell
नहीं बना सकता जो गतिशील रूप से आकार (RefCell<T : ?Sized>
) है, तो ऐसे कार्यों में कितना अच्छा काम हो सकता है?क्यों है? कुछ रेफसेल कार्यों के लिए बाध्य आकार, लेकिन सभी नहीं?
5
A
उत्तर
4
वह समर्थन added in a commit that also added tests था। हम यह देखने के लिए कि यह कैसे उपयोग होने की उम्मीद थी उन परीक्षण देख सकते हैं:
use std::cell::RefCell;
#[test]
fn refcell_unsized() {
let cell: &RefCell<[i32]> = &RefCell::new([1, 2, 3]);
{
let b = &mut *cell.borrow_mut();
b[0] = 4;
b[2] = 5;
}
let comp: &mut [i32] = &mut [4, 2, 5];
assert_eq!(&*cell.borrow(), comp);
}
तुम हमेशा के रूप में संकलक स्थान की मात्रा ढेर पर आवंटित करने के लिए पता करने की जरूरत है एक Sized
बाध्य के साथ एक निर्माता की आवश्यकता है। एक बार आपके पास हो जाने के बाद, आप गतिशील रूप से आकार के लिए मजबूर कर सकते हैं।
संबंधित मुद्दे
- 1. क्यों सभी कार्यों के लिए constexpr डिफ़ॉल्ट नहीं है?
- 2. आर आयात सभी लेकिन कार्यों
- 3. चर के लिए वैरिएबल क्यों ठीक नहीं है लेकिन यह कार्यों के लिए ठीक है?
- 4. कुछ सबप्लॉट्स के बीच अंतर, लेकिन सभी
- 5. मेरे डायलॉग बॉक्स कुछ (लेकिन सभी नहीं) विंडोज 7 कंप्यूटर पर बहुत छोटे क्यों हैं?
- 6. गणित कार्यों के लिए कोई स्थिर पुस्तकालय क्यों नहीं है?
- 7. यह जीवनकाल बाध्य क्यों नहीं करता है?
- 8. एनएसआईमेज आकार कुछ चित्रों के साथ वास्तविक आकार नहीं है?
- 9. शुद्ध कार्यों के साथ सीक्वेंसिंग बाध्य
- 10. क्यों कुछ बूस्ट कार्यों नाम स्थान
- 11. क्यों sprintf() आउटपुट कुछ भी नहीं है?
- 12. समानांतर Linq - (बाध्य कार्यों गैर सीपीयू के लिए)
- 13. क्यों ArrayList आकार() के बजाय आकार() प्राप्त नहीं करता है?
- 14. खोज एल्गोरिदम लेकिन कार्यों के लिए
- 15. आयात "cocos2d.h" कुछ फ़ाइलों में काम करता है, लेकिन सभी
- 16. एक बाध्य संदर्भ का आकार
- 17. tmux कुछ सिंक्रनाइज़ करें लेकिन सभी पैन
- 18. जावा में, सरणी टाइप वैरिएबल की बाध्य क्यों नहीं हो सकती है, लेकिन वाइल्डकार्ड की बाध्य हो सकती है?
- 19. इंटेलिजे आईडीईए कुछ अप्रयुक्त तरीकों को बताता है लेकिन सभी
- 20. ओआरएम सभी या कुछ भी नहीं है?
- 21. क्या रेडिस डीबी की तरह कुछ है, लेकिन राम आकार से सीमित नहीं है?
- 22. कुछ आकार
- 23. क्यों MySQL वैज्ञानिक नोटेशन में कुछ फ्लोट लौट रहा है, लेकिन दूसरों को नहीं?
- 24. मैं कुछ के लिए एक छवि कैसे सेट करूं लेकिन TreeView में सभी नोड्स कैसे नहीं?
- 25. दस्तावेज़.cookie साइट के लिए सभी कुकी क्यों नहीं दिखाता है?
- 26. दबाएं "सभी के लिए कुछ भी नहीं किया जाना चाहिए"
- 27. कुछ (सभी नहीं) नियंत्रकों के लिए HTTP बेसिक ऑथ
- 28. स्कैला कलाकारों के साथ सीपीयू-बाध्य कार्यों को निष्पादित करना?
- 29. एआरजीएस के साथ साइनऑन स्टब कुछ मैच कर सकता है लेकिन सभी तर्क नहीं
- 30. "फोकस" और "खिड़की" के लिए "कलंक" कार्यों बाध्य करने के लिए JQuery का उपयोग करना, आईई
क्या यह 'रेफसेल' बनाना संभव है? मैंने 'RefCell :: new (x) को RefCell ' के रूप में आजमाया है, हालांकि, मुझे एक त्रुटि मिल रही है कि 'आकार' 'किसी भी 'के लिए लागू नहीं किया गया है। दूसरी ओर, 'बॉक्स :: नया (एक्स) बॉक्स ' ठीक काम करता है। ऐसा लगता है कि समान 'आकार' प्रतिबंध हैं। मैं क्या खो रहा हूँ? https://play.rust-lang.org/?gist=5af8c51ac91d162d999f&version=stable –
Matt
@ मैट एक दिलचस्प सवाल है। मुझे जवाब नहीं पता, लेकिन अगर आप सोचते हैं कि यह उपयोगी संदर्भ प्रदान करता है, तो मैं आपको इस सवाल पर वापस लिंक करने के लिए एक नया प्रश्न पूछने के लिए प्रोत्साहित करता हूं। – Shepmaster