पुस्तकालय मॉड्यूल

रस्ट लाइब्रेरी मॉड्यूल दो प्रकार के होते हैं, एक जो रस्ट लाइब्रेरीज़ का उत्पादन करता है और एक जो सी-संगत लाइब्रेरीज़ का उत्पादन करता है। इसके अतिरिक्त, सिस्टम निर्माण उद्देश्यों के लिए आप रस्ट प्रक्रियात्मक मैक्रोज़ ( proc-macros ) को एक विशेष प्रकार की लाइब्रेरी के रूप में मान सकते हैं।

जंग_पुस्तकालय

rust_library मॉड्यूल अन्य रस्ट मॉड्यूल द्वारा उपयोग के लिए रस्ट लाइब्रेरी तैयार करता है।

_host वेरिएंट के अलावा, रस्ट लाइब्रेरीज़ में मॉड्यूल प्रकार होते हैं जो उपलब्ध लिंकेज को नियंत्रित करते हैं।

रस्ट लाइब्रेरी मॉड्यूल प्रकार परिभाषा
जंग_पुस्तकालय दोनों लाइब्रेरी वैरिएंट, rlib और dylib प्रदान करता है। एओएसपी रस्ट लाइब्रेरीज़ के लिए इस मॉड्यूल प्रकार की अनुशंसा करता है, क्योंकि यह rustlibs प्रॉपर्टी के तहत निर्भरता के रूप में सूचीबद्ध होने पर मॉड्यूल को सही ढंग से काम करने की अनुमति देता है।
रस्ट_लाइब्रेरी_आरलिब रस्ट लाइब्रेरी का केवल rlib संस्करण प्रदान करता है; केवल rlib वेरिएंट प्रदान करने वाले मॉड्यूल को rustlibs प्रॉपर्टी के साथ काम करने की गारंटी नहीं दी जा सकती है।
रस्ट_लाइब्रेरी_डाइलिब रस्ट लाइब्रेरी का केवल dylib संस्करण प्रदान करता है; केवल dylib वेरिएंट प्रदान करने वाले मॉड्यूल को rustlibs प्रॉपर्टी के साथ काम करने की गारंटी नहीं दी जा सकती है।

जंग_ffi

rust_ffi मॉड्यूल सीसी मॉड्यूल के साथ इंटरऑप करने के लिए सी-संगत लाइब्रेरी तैयार करता है।

_host वेरिएंट के अलावा, रस्ट एफएफआई लाइब्रेरीज़ में मॉड्यूल प्रकार होते हैं जो उपलब्ध लिंकेज को नियंत्रित करते हैं, जैसा कि निम्न तालिका में दिखाया गया है।

जंग एफएफआई लाइब्रेरी मॉड्यूल प्रकार परिभाषा
जंग_ffi दोनों सी लाइब्रेरी वेरिएंट प्रदान करता है: स्थिर और साझा।
जंग_ffi_shared केवल C साझा लाइब्रेरी संस्करण प्रदान करता है।
जंग_ffi_static केवल C स्थैतिक लाइब्रेरी संस्करण प्रदान करता है।

C से रस्ट को कॉल करने के लिए rust_ffi का उपयोग करने के बुनियादी उदाहरण के लिए, Android रस्ट पैटर्न पृष्ठ देखें।

अधिक उन्नत उपयोग के बारे में जानकारी के लिए, आधिकारिक रस्ट दस्तावेज़ पर जाएँ।

रस्ट_प्रोक_मैक्रो

रस्ट प्रक्रियात्मक मैक्रोज़ (प्रो-मैक्रोज़) कंपाइलर को स्रोत कोड परिवर्तन करने या नई विशेषताएँ प्रदान करने के लिए विस्तारित करने के लिए उपयोगी हो सकते हैं। इनके बारे में अधिक जानकारी आधिकारिक रस्ट दस्तावेज़ के प्रक्रियात्मक मैक्रोज़ पृष्ठ में पाई जा सकती है।

बिल्ड सिस्टम के प्रयोजनों के लिए, rust_proc_macro मॉड्यूल rust_library मॉड्यूल के समान काम करता है। उन मॉड्यूल के लिए जो rust_proc_macros पर निर्भर हैं, मॉड्यूल नाम को proc_macros प्रॉपर्टी में जोड़ें।

चूंकि proc_macros कंपाइलर प्लगइन्स हैं, वे आवश्यक रूप से होस्ट को लक्षित करते हैं और किसी भी कोड का उत्पादन नहीं करते हैं जो किसी डिवाइस पर चलेगा।

उल्लेखनीय रस्ट लाइब्रेरी गुण

नीचे दी गई तालिका में परिभाषित गुण उन महत्वपूर्ण सामान्य गुणों के अतिरिक्त हैं जो सभी मॉड्यूल पर लागू होते हैं। ये या तो रस्ट लाइब्रेरी मॉड्यूल के लिए विशेष रूप से महत्वपूर्ण हैं, या rust_library मॉड्यूल प्रकार के लिए विशिष्ट अद्वितीय व्यवहार प्रदर्शित करते हैं।

जंग पुस्तकालय गुण परिभाषा
तना/नाम stem प्रॉपर्टी आउटपुट लाइब्रेरी फ़ाइल नाम को नियंत्रित करती है, जो अन्यथा name पर डिफ़ॉल्ट होती है।

रस्ट कंपाइलर लाइब्रेरी फ़ाइल नामों पर कुछ आवश्यकताएं लगाता है, और परिणामस्वरूप बिल्ड सिस्टम संकलन समस्याओं से बचने के लिए इन आवश्यकताओं को लागू करता है। आउटपुट फ़ाइल नाम lib<crate_name><suffix> प्रारूप के अनुरूप होना चाहिए। (यहां crate_name संपत्ति पर निर्भरता है)।

क्रेट_नाम यह पुस्तकालय-उत्पादक मॉड्यूल के लिए एक आवश्यक संपत्ति है; इसका आउटपुट फ़ाइल नाम से अतिरिक्त संबंध है। ( stem परिभाषा देखें।)
निर्यात_शामिल_डीआईआर rust_ffi मॉड्यूल के लिए, यह संपत्ति सापेक्ष पथों का प्रतिनिधित्व करने वाले स्ट्रिंग्स की एक सूची को परिभाषित करती है: पथ जिनमें हेडर होते हैं जिनका उपयोग आश्रित cc मॉड्यूल कर सकते हैं।

रस्ट_लाइब्रेरी या रस्ट_फ़ी का लिंकेज

डिफ़ॉल्ट रूप से, उपकरणों को लक्षित करने वाले रस्ट लाइब्रेरी मॉड्यूल हमेशा libstd के विरुद्ध गतिशील रूप से जुड़े होते हैं। हालाँकि, होस्ट मॉड्यूल हमेशा libstd के विरुद्ध स्थिर रूप से जुड़े होते हैं।

rustlibs निर्भरता के लिए उपयोग किया जाने वाला लिंकेज रूट मॉड्यूल की लिंकेज प्राथमिकताओं पर निर्भर करता है। (उदाहरण के लिए, prefer_rlib: true के साथ एक rust_binary , रस्ट लाइब्रेरी वेरिएंट का उपयोग करेगा जो rustlibs rlibs के रूप में लिंक करता है।)

रूट निर्भरता मॉड्यूल के उत्पादन की अनुमति देने के लिए जो किसी भी गतिशील जंग पुस्तकालयों (जैसे स्थिर निष्पादन योग्य) पर निर्भर नहीं होते हैं, rlibs गतिशील और स्थिर दोनों libstd लिंकेज वेरिएंट प्रदान करता है। सही संस्करण सूंग द्वारा स्वचालित रूप से लिंक किया गया है।