सुनिश्चित करें कि आपकी रस्ट परियोजनाएँ सुव्यवस्थित हैं ताकि समय के साथ इसे बनाए रखना आसान हो।
जटिल और विश्वसनीय अनुप्रयोगों के निर्माण के लिए जंग एक उत्कृष्ट विकल्प है। रस्ट एप्लिकेशन विकसित करने के लिए आवश्यक कौशल में से एक आपकी परियोजनाओं को प्रभावी ढंग से संरचित करना है, जिसमें तृतीय-पक्ष पैकेज शामिल करना शामिल है।
रस्ट अनुप्रयोगों के विकास के लिए प्रभावी परियोजना संगठन महत्वपूर्ण है। अच्छी तरह से संरचित रस्ट ऐप्स सहयोग और आसान तृतीय-पक्ष ऐप एकीकरण को बढ़ाते हैं, ऐप के विकास के लिए आवश्यक समय और प्रयास को काफी कम करते हैं। जंग प्रभावी कोड संगठन और प्रबंधन के लिए एक अंतर्निहित पैकेज प्रबंधक और अन्य उपकरण प्रदान करता है।
जंग परियोजनाओं की स्थापना
रस्ट प्रोजेक्ट स्थापित करना आसान है एक बार जब आप अपनी मशीन पर जंग लगा लेते हैं; रस्ट प्रोजेक्ट बनाने और कॉन्फ़िगर करने के लिए आप कार्गो (रस्ट के बिल्ट-इन पैकेज मैनेजर और बिल्ड सिस्टम) का उपयोग कर सकते हैं। यह अन्य पैकेज प्रबंधकों की तरह ही है Node.js के लिए npm और पायथन के लिए पिप. कार्गो निर्भरता का प्रबंधन करता है, कोड संकलित करता है, और प्रलेखन उत्पन्न करता है, जिससे यह जंग के विकास के लिए एक आवश्यक उपकरण बन जाता है।
अपने कार्गो इंस्टॉलेशन को सत्यापित करने के लिए यह कमांड चलाएँ:
कार्गो --संस्करण
आदेश स्थापित कार्गो संस्करण प्रदर्शित करता है।
आप इसके साथ एक नया रस्ट प्रोजेक्ट बना सकते हैं कार्गो नया आज्ञा। आपको प्रोजेक्ट का नाम बताना होगा.
कार्गो नया my_project
कमांड वर्तमान निर्देशिका में एक नई निर्देशिका बनाएगी जिसमें आपके रस्ट प्रोजेक्ट के लिए आवश्यक मूल फाइलें होंगी, जिनमें a कार्गो.टोमल अपने प्रोजेक्ट की निर्भरताओं के प्रबंधन के लिए फ़ाइल।
रस्ट पैकेज नेमस्पेस
रस्ट में पैकेज और क्रेट आवश्यक घटक हैं। क्रेट पुस्तकालय या बायनेरिज़ हैं जिन्हें रस्ट डेवलपर्स कुछ विशिष्ट उपयोग के लिए उपयोग और संकलित कर सकते हैं, और पैकेज क्रेट का एक संग्रह है। पैकेज में आमतौर पर एक टोकरा होता है जो पुन: प्रयोज्य कोड और एक बाइनरी रखता है जो पुस्तकालय क्रेट के लिए एक सीएलआई प्रदान करता है।
क्रेट्स में होना चाहिए कार्गो.टोमल पैकेज के बारे में मेटाडेटा वाली फ़ाइल, जैसे उसका नाम, संस्करण, निर्भरताएँ और स्क्रिप्ट बनाएँ।
संकुल के बीच नामकरण विवाद से बचने के लिए रस्ट पैकेज एक नामकरण परंपरा का पालन करते हैं। पैकेज नाम विश्व स्तर पर अद्वितीय, लोअरकेस होना चाहिए, और इसमें केवल अक्षर, अंक और हाइफ़न शामिल होने चाहिए। यदि पैकेज के नाम में कई शब्द हैं, तो उन्हें हाइफ़न से अलग करें, उदा। hyperserver.
आप रस्ट पैकेज नेमस्पेस के साथ कोड एक्सेस कर सकते हैं उपयोग कीवर्ड के बाद पैकेज और क्रेट नाम।
यहाँ एक आयात करने का एक उदाहरण है रंग ए से समारोह हाशिया टोकरा:
उपयोग रैंड:: रंग;
आप संकुल के लिए एकाधिक नामस्थान बना सकते हैं। जब आप एक फ़ोल्डर बनाते हैं, तो आप एक नया नामस्थान बनाते हैं जिसे आप पहचानकर्ता के पथ को निर्दिष्ट करने के लिए डॉट नोटेशन के साथ एक्सेस कर सकते हैं।
जंग में, संकुल के लिए कई नामस्थान हो सकते हैं। जब आप कोई फ़ोल्डर बनाते हैं, तो आप एक नया नामस्थान बनाते हैं। किसी अन्य नामस्थान से कोड तक पहुँचने के लिए, आप पहचानकर्ता के पथ को निर्दिष्ट करने के लिए डॉट नोटेशन का उपयोग करते हैं।
यहां किसी भिन्न नाम स्थान से किसी फ़ंक्शन तक पहुँचने का एक उदाहरण दिया गया है:
// फ़ोल्डर 1 नाम स्थान में फ़ाइल
पबfnफ़ोल्डर() -> यू32 {
// कुछ फंक्शन बॉडी यहाँ
वापस करना0;
}// फ़ोल्डर 2 नाम स्थान में फ़ाइल
उपयोग फ़ोल्डर 1:: फ़ोल्डर;
पबfnनिर्देशिका() {
// फ़ोल्डर फ़ंक्शन को फ़ोल्डर 1 नामस्थान से एक्सेस करना
होने देना फ़ोल्डर_फंक = फ़ोल्डर ();
}
कार्यक्रम अलग-अलग नामस्थानों में दो रस्ट मॉड्यूल को परिभाषित करता है, फ़ोल्डर 1 और फ़ोल्डर2 क्रमश। फ़ोल्डर 1 मॉड्यूल में एक सार्वजनिक कार्य होता है फ़ोल्डर जो 32-बिट अहस्ताक्षरित पूर्णांक मान लौटाता है।
फ़ोल्डर2 मॉड्यूल आयात करता है फ़ोल्डर समारोह से फ़ोल्डर 1 के साथ नाम स्थान उपयोग कीवर्ड, अनुमति देता है निर्देशिका एक्सेस करने का कार्य करता है फ़ोल्डर समारोह से फ़ोल्डर 1 मापांक। निर्देशिका फ़ंक्शन कॉल करता है फ़ोल्डर फ़ंक्शन, और वापसी मान को असाइन किया गया है फ़ोल्डर_func चर।
आपको पैकेज से पहचानकर्ताओं के नाम को बड़ा करना होगा या उन्हें निर्यात करने के लिए क्रेट करना होगा। जब आप एक पहचानकर्ता को निर्यात करते हैं, तो आप इसे कोड का उपयोग करने वाले अन्य पैकेजों में पहुंच योग्य बनाते हैं।
यहां एक सार्वजनिक फ़ंक्शन का उदाहरण दिया गया है जिसे निर्यात किया जा सकता है।
// फ़ंक्शन अन्य पैकेजों और क्रेटों को निर्यात किया गया
पबfnMyFunction() {
// कुछ फंक्शन बॉडी यहाँ
}
आपको इसका उपयोग करने की भी आवश्यकता होगी पब कीवर्ड। जंग में, पब कीवर्ड के लिए छोटा है जनता. जब कोई फ़ंक्शन, संरचना, एनम, कोई जंग डेटा प्रकार या मॉड्यूल पब कीवर्ड के साथ चिह्नित किया गया है, यह अपने मॉड्यूल के बाहर पहुंच योग्य हो जाता है। आइटम अपने मॉड्यूल के लिए पब कीवर्ड के बिना निजी है और केवल इसके भीतर से ही पहुँचा जा सकता है।
दायरे और गोपनीयता को नियंत्रित करने के लिए मॉड्यूल परिभाषित करना
आप रस्ट प्रोग्राम में दायरे और गोपनीयता को नियंत्रित करने के लिए मॉड्यूल का उपयोग कर सकते हैं। मॉड्यूल आपको कोड को तार्किक इकाइयों में व्यवस्थित करने की अनुमति देते हैं जो प्रबंधन और रखरखाव में आसान होते हैं।
आप के साथ मॉड्यूल घोषित कर सकते हैं आधुनिक कीवर्ड के बाद मॉड्यूल का नाम और घुंघराले ब्रेसिज़। एक नए मॉड्यूल को परिभाषित करना इसकी सामग्री के लिए एक नया नाम स्थान बनाता है, जिसका अर्थ है कि कार्य, संरचना, या मॉड्यूल के भीतर परिभाषित अन्य आइटम केवल आपके द्वारा स्पष्ट रूप से निर्यात किए जाने के अलावा मॉड्यूल के भीतर ही पहुंच योग्य हैं उन्हें।
मॉड्यूल नामकरण विवादों को रोकने में मदद करते हैं, कोड को समझने के लिए अधिक सहज बनाते हैं।
यहाँ एक साधारण मॉड्यूल के लिए सिंटैक्स है:
आधुनिक my_module {
// मॉड्यूल सामग्री यहां जाएं
}
मॉड्यूल के भीतर, आप चर, फ़ंक्शंस, स्ट्रक्चर्स, एनम और अन्य प्रकारों को परिभाषित कर सकते हैं।
आधुनिक my_module {
fnadd_numbers(ए: i32, बी: i32) -> i32 {
ए + बी
}
}
आप उपयोग कर सकते हैं पब कीवर्ड फ़ंक्शन को निर्यात करने और प्रोग्राम के अन्य भागों में फ़ंक्शन तक पहुंचने के लिए।
आधुनिक my_module {
पबfnadd_numbers(ए: i32, बी: i32) -> i32 {
ए + बी
}
}
अब, आप कॉल कर सकते हैं add_numbers आपके कार्यक्रम के अन्य भागों से कार्य करता है।
आप इसके साथ मॉड्यूल की गोपनीयता को भी नियंत्रित कर सकते हैं पब मॉड्यूल परिभाषाओं पर कीवर्ड।
पबआधुनिक my_module {
पबfnadd_numbers(ए: i32, बी: i32) -> i32 {
ए + बी
}
}
अब my_module मॉड्यूल सार्वजनिक है, और आप मॉड्यूल को अन्य मॉड्यूल से एक्सेस कर सकते हैं।
यदि आपको मॉड्यूल या आइटम को किसी विशिष्ट मॉड्यूल या मॉड्यूल के सेट तक पहुंच योग्य बनाने की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं पब (टोकरा) कीवर्ड। पब (टोकरा) कीवर्ड आइटम को उसी क्रेट के भीतर मॉड्यूल से एक्सेस करने योग्य बनाता है लेकिन अन्य क्रेट में मॉड्यूल से नहीं।
आधुनिक my_module {
पबstructMyStruct {
पब(टोकरा) some_field: यू32,
}
}
अब आप विशिष्ट आइटम तक पहुंच सकते हैं (इस मामले में, some_field का क्षेत्र MyStruct संरचना) आपके कार्यक्रम के अन्य भागों में।
fnमुख्य() {
होने देना my_struct = my_module:: MyStruct { some_field: 42 };
प्रिंटल!("{}", my_struct.some_field);
}
my_struct चर का एक उदाहरण है MyStruct संरचना। चर पथ विभाजक (::) के साथ संरचना तक पहुँचते हैं। मुख्य फ़ंक्शन प्रिंट करता है some_field के साथ संरचना का क्षेत्र प्रिंटल! मैक्रो।
रस्ट का स्वामित्व मॉडल स्मृति सुरक्षा सुनिश्चित करता है
रस्ट कोड को व्यवस्थित करना यह सुनिश्चित करने का एक तरीका है कि आपका कोड समय के साथ बनाए रखना और समर्थन करना आसान है। रस्ट समुदाय के नियमों और सम्मेलनों का पालन करने वाले सुव्यवस्थित कोड में बग से निपटना और सुरक्षा सुनिश्चित करना आसान है।
डिफ़ॉल्ट रूप से, रस्ट सुनिश्चित करता है कि प्रोग्राम अंतर्निहित स्वामित्व मॉडल के साथ मेमोरी सुरक्षित हैं। स्वामित्व मॉडल यह सुनिश्चित करके मेमोरी सुरक्षा सुनिश्चित करता है कि मेमोरी में वेरिएबल्स का एक अद्वितीय स्वामी है। स्वामित्व मॉडल डेटा ट्रेस और कई प्रकार की मेमोरी त्रुटियों को रोकता है।