2016-04-07 10 views
5

Default विशेषता #[derive(..)] डी केवल तभी हो सकती है जब व्युत्पन्न प्रकार की सामग्री Default लागू हो। इसका मतलब यह है कि इसका उपयोग जितना अधिक लागू किया जा सके उतना आसान हो जाता है। हालांकि, मुझे लगता है कि std से कुछ प्रकार के कार्यान्वयन अनुपलब्ध हैं, हालांकि उनके पास पूरी तरह से वैध डिफ़ॉल्ट हैं (कभी-कभी सामान्य पैराम के आधार पर)।म्यूटेक्स, आरडब्लॉक, कोंडवार, अवधि के लिए डिफ़ॉल्ट क्यों लागू नहीं किया गया है?

  • Mutex<T> और RWLock<T> द्वारा new(_) (where T: Default)
  • को लागू कर सकता है
  • CondVar बस
(एक शून्य अवधि, जो एक समझदार डिफ़ॉल्ट है पाने के लिए) CondVar::new()
  • Duration प्राप्त कर सकता है द्वारा लागू कर सकता है

    क्या उन चूकों के लिए तकनीकी कारण है?

  • +0

    मैं शून्य अवधि के साथ असहमत हूं, जो एक समझदार डिफ़ॉल्ट * है, लेकिन अन्य, निश्चित रूप से। – Shepmaster

    +0

    क्यों? क्या आपको लगता है कि कोई समझदार डिफ़ॉल्ट नहीं है या क्या आपको लगता है कि एक और समझदार है? – llogiq

    +0

    मैं कहूंगा कि कोई समझदार डिफ़ॉल्ट नहीं है। अधिकांश समय मैं टाइमआउट के संबंध में अवधि के बारे में सोचता हूं, और शून्य का टाइमआउट मुझे समझ में नहीं आता है और न ही कोई अन्य मूल्य उठाएगा। हालांकि मुझे लगता है कि संख्याएं 'डिफ़ॉल्ट' को '0' के रूप में लागू करती हैं, इसलिए ¯ \\ _ (ツ) _/¯। – Shepmaster

    उत्तर

    1

    कुछ लोगों ने Debug कार्यान्वयन के साथ एक समान प्रश्न पूछा है, “Missing Debug Implementations — #31869” देखें जो केवल Default जैसी शर्तों के तहत प्राप्त हो सकता है।

    दुर्भाग्यवश संबंधित पीआर "libcore: add Debug implementations to most missing types #32054" ऐसा लगता है कि कुछ प्रकार Debug नहीं थे क्योंकि किसी ने भी Debug उनके लिए कार्यान्वयन नहीं लिखा था। कुछ अन्य प्रकार इस प्रकार के विवादास्पद हैं कि कार्यान्वयन क्या करना चाहिए और उन्हें मानक पुस्तकालय में जोड़ने के बारे में कुछ डर है।

    यह मानना ​​उचित है कि कम से कम कुछ प्रकार Default समान गैर तकनीकी कारणों से नहीं हैं।

    +0

    समस्या # 31865 है (कम से कम Condvar के लिए, मैंने बनाया दूसरों का एक नोट)। मैंने धक्का दिया [पीआर # 32807] (https://github.com/rust-lang/rust/pull/32807) – llogiq

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