परिचय: Rust में दस्तावेज़ीकरण क्यों आवश्यक है, यह सिर्फ एक सनक नहीं है
\nसिस्टम प्रोग्रामिंग की दुनिया में, Rust अपनी सुरक्षा, प्रदर्शन और सख्त कंपाइलर के कारण एक विशेष स्थान रखता है। हालांकि, सबसे सुंदर कोड भी बेकार है अगर डेवलपर्स यह नहीं समझते कि इसका उपयोग कैसे करना है। दस्तावेज़ीकरण आपके कोड और इसके उपयोगकर्ताओं के बीच का पुल है। Rust में, यह प्रक्रिया केवल अनुशंसित नहीं है, बल्कि टूल स्तर पर पारिस्थितिकी तंत्र में निर्मित है।
\nइस लेख में, हम विश्लेषण करेंगे कि Rust प्रोजेक्ट के लिए शुरू से दस्तावेज़ीकरण कैसे लिखें: बुनियादी doc-टिप्पणियों से लेकर mdbook के साथ एक पूर्ण पुस्तक बनाने तक। आप सीखेंगे कि rustdoc, Markdown फ़ॉर्मेटिंग और दस्तावेज़ीकरण में परीक्षणों का उपयोग कैसे करें ताकि आपका प्रोजेक्ट समझने योग्य और पेशेवर बन सके।
मूल बातें: doc-टिप्पणियों के साथ कोड का दस्तावेज़ीकरण
\nRust दो प्रकार की टिप्पणियाँ प्रदान करता है: सामान्य (//) और doc-टिप्पणियाँ (/// और //!)। Doc-टिप्पणियाँ स्वचालित रूप से rustdoc टूल द्वारा संसाधित की जाती हैं, जो HTML दस्तावेज़ीकरण उत्पन्न करता है। यह किसी भी Rust प्रोजेक्ट का आधार है।
सार्वजनिक तत्वों के लिए Doc-टिप्पणियाँ
\nफ़ंक्शन, स्ट्रक्चर, ट्रेट और मॉड्यूल का दस्तावेज़ीकरण करने के लिए /// का उपयोग करें। उदाहरण:
/// n का फैक्टोरियल गणना करता है।\n/// \n/// # तर्क\n/// * `n` - गैर-ऋणात्मक पूर्णांक।\n/// \n/// # वापसी मान\n/// * `u64` - n का फैक्टोरियल।\n/// \n/// # उदाहरण\n/// ```\n/// let result = factorial(5);\n/// assert_eq!(result, 120);\n/// ```\npub fn factorial(n: u32) -> u64 {\n (1..=n).product()\n}\n# तर्क, # वापसी मान और # उदाहरण अनुभागों पर ध्यान दें। ये मानक Markdown शीर्षक हैं जो पठनीयता में सुधार करते हैं।
मॉड्यूल का आंतरिक दस्तावेज़ीकरण
\nमॉड्यूल (फ़ाइल) का दस्तावेज़ीकरण करने के लिए //! का उपयोग करें:
//! गणितीय संक्रियाओं के लिए मॉड्यूल।\n//!\n//! यह मॉड्यूल फैक्टोरियल, फाइबोनैचि संख्याओं और अन्य गणितीय एल्गोरिदम की गणना के लिए फ़ंक्शन प्रदान करता है।\n\nउन्नत तकनीकें: परीक्षण, लिंक और गुण
\nrustdoc की एक मजबूत विशेषता दस्तावेज़ीकरण से कोड को परीक्षण के रूप में चलाने की क्षमता है। यह सुनिश्चित करता है कि आपके उदाहरण हमेशा अद्यतित और काम करने वाले हों।
दस्तावेज़ीकरण में परीक्षण (doctests)
\ndoc-टिप्पणियों के अंदर कोई भी कोड ब्लॉक जो ```rust या बस ``` के रूप में चिह्नित है, cargo test चलाने पर स्वचालित रूप से एक परीक्षण बन जाता है। उदाहरण:
/// दो संख्याओं को जोड़ता है।\n///\n/// ```\n/// let sum = add(2, 3);\n/// assert_eq!(sum, 5);\n/// ```\npub fn add(a: i32, b: i32) -> i32 {\n a + b\n}\nउन पंक्तियों को छिपाने के लिए जो उदाहरण में नहीं होनी चाहिए (जैसे fn main()), # गुण का उपयोग करें:
/// ```\n/// # fn main() {\n/// let x = 42;\n/// assert_eq!(x, 42);\n/// # }\n/// ```\n\nअन्य तत्वों के लिंक
\nआप [`नाम`] सिंटैक्स का उपयोग करके अन्य फ़ंक्शन, स्ट्रक्चर या मॉड्यूल का लिंक दे सकते हैं। Rustdoc स्वचालित रूप से एक हाइपरलिंक बनाएगा:
/// संयोजनों की गणना के लिए [`factorial`] फ़ंक्शन का उपयोग करता है।\n\nदस्तावेज़ीकरण गुण
\nगुण rustdoc के व्यवहार को नियंत्रित करने की अनुमति देते हैं:
- \n
#[doc(hidden)]— तत्व को दस्तावेज़ीकरण से छुपाता है। \n #[doc(alias = "वैकल्पिक_नाम")]— खोज के लिए एक उपनाम जोड़ता है। \n #[doc(cfg(feature = "some_feature"))]— केवल तब दस्तावेज़ीकरण दिखाता है जब सुविधा सक्षम हो। \n
#[doc(alias)] के उपयोग का उदाहरण:
#[doc(alias = "hello")]\npub fn greet(name: &str) -> String {\n format!("Hello, {}!", name)\n}\n\nजनरेशन और प्रकाशन: cargo doc और docs.rs
\nजब दस्तावेज़ीकरण लिखा जाता है, तो इसे उत्पन्न करने की आवश्यकता होती है