Rust: Windows, macOS और Linux के लिए बिना किसी परेशानी के एक कोड लिखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट के लिए आदर्श उम्मीदवार क्यों है?

\n

सॉफ़्टवेयर डेवलपमेंट की दुनिया में एक स्थायी समस्या है: एक बार प्रोग्राम लिखें और इसे Windows, macOS और Linux पर चलाएँ। आमतौर पर यह सशर्त निर्देशों, फ़ाइल पथों के आसपास अनावश्यक उपायों और अंतहीन परीक्षण के साथ एक बुरा सपना बन जाता है। लेकिन एक भाषा है जो इस समस्या को सिस्टम स्तर पर हल करती है — Rust।

\n

Rust को क्रॉस-प्लेटफ़ॉर्मनेस को ध्यान में रखकर डिज़ाइन किया गया था। इसका कंपाइलर (rustc) दर्जनों आर्किटेक्चर और OS के लिए बाइनरी जनरेट कर सकता है। लेकिन मुख्य बात यह है कि मानक लाइब्रेरी (std) में पहले से ही ऑपरेटिंग सिस्टम पर एक एब्स्ट्रैक्शन बनाया गया है। आप कोड लिखते हैं, और Rust खुद ही संभाल लेता है कि किसी विशिष्ट प्लेटफ़ॉर्म पर फ़ाइलों, थ्रेड्स या नेटवर्क के साथ कैसे काम करना है। यह जादू नहीं है, यह एक स्मार्ट डिज़ाइन है।

\n

इस लेख में हम केवल सिद्धांत के बारे में बात नहीं करेंगे। हम वास्तविक कोड उदाहरणों पर चर्चा करेंगे: सरल "Hello, World!" से लेकर फ़ाइल सिस्टम के साथ काम करने और GUI एप्लिकेशन बनाने तक। आप देखेंगे कि कैसे Rust में क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट एक सिरदर्द से एक आनंद में बदल जाता है। चलिए शुरू करते हैं!

\n\n

Rust क्रॉस-प्लेटफ़ॉर्मनेस कैसे सुनिश्चित करता है?

\n

Rust का रहस्य इसकी तीन-स्तरीय एब्स्ट्रैक्शन प्रणाली में है:

\n
    \n
  • प्लेटफ़ॉर्म-स्वतंत्र कोड — आपके प्रोग्राम का 90%। केवल std का उपयोग करता है, हर जगह समान रूप से काम करता है।
  • \n
  • सशर्त कंपाइलेशन — प्लेटफ़ॉर्म-निर्भर भागों के लिए। Rust आपको लक्ष्य OS के आधार पर कोड को शामिल या बाहर करने की अनुमति देता है।
  • \n
  • बाहरी क्रेट्स (crates) — लाइब्रेरी जैसे serde या tokio, जो पहले से ही आपके लिए क्रॉस-प्लेटफ़ॉर्म समस्याओं को हल करते हैं।
  • \n
\n

मूल सिद्धांत: आप सामान्य कोड लिखते हैं, और दुर्लभ अपवादों के लिए #[cfg(target_os = "...")] निर्देशों का उपयोग करते हैं। यह C/C++ की तुलना में अधिक स्वच्छ है, जहाँ अक्सर #ifdef के पूरे ब्लॉक बनाने पड़ते हैं।

\n\n

उदाहरण: कोड में प्लेटफ़ॉर्म निर्धारित करना

\n

देखते हैं कि बिना गंदे हैक के कैसे पता लगाया जाए कि प्रोग्राम किस OS पर चल रहा है:

\n
fn main() {\n    if cfg!(target_os = "windows") {\n        println!("Windows पर चल रहा है");\n    } else if cfg!(target_os = "macos") {\n        println!("macOS पर चल रहा है");\n    } else if cfg!(target_os = "linux") {\n        println!("Linux पर चल रहा है");\n    } else {\n        println!("अज्ञात OS (लेकिन Rust फिर भी काम करता है!)");\n    }\n}\n
\n

महत्वपूर्ण: cfg! एक मैक्रो है जो कंपाइलेशन के समय मूल्यांकित होता है। यदि आप इस कोड को Linux पर कंपाइल करते हैं, तो बाइनरी में केवल Linux वाली शाखा शामिल होगी। कोई अतिरिक्त कोड नहीं — कोई समस्या नहीं।

\n\n

फ़ाइल सिस्टम के साथ काम करना: एक बार लिखें

\n

क्लासिक सिरदर्द — फ़ाइल पथ। Windows पर यह C:\\Users\\name\\file.txt है, Linux पर — /home/name/file.txt। Rust इसे Path ट्रेट और PathBuf स्ट्रक्चर के माध्यम से हल करता है।

\n

एक उदाहरण देखें: एक डायरेक्टरी बनाना और फ़ाइल में लिखना। कोड बिना किसी बदलाव के किसी भी OS पर काम करेगा:

\n
use std::fs;\nuse std::path::PathBuf;\n\nfn main() -> Result<(), Box<dyn std::error::Error>> {\n    // उपयोगकर्ता की होम डायरेक्टरी का पथ बनाएँ\n    let home = dirs::home_dir().expect("होम डायरेक्टरी प्राप्त नहीं कर सका");\n    let mut path = PathBuf::from(home);\n    path.push("my_rust_app");\n    path.push("data");\n    \n    // डायरेक्टरी बनाएँ (पुनरावर्ती रूप से)\n    fs::create_dir_all(&path)?;\n    \n    // फ़ाइल बनाएँ\n    let file_path = path.join("output.txt");\n    fs::write(&file_path, "Hello, क्रॉस-प्लेटफ़ॉर्म दुनिया!")?;\n    \n    println!("फ़ाइल सहेजी गई: {:?}", file_path);\n    Ok(())\n}\n
\n

यहाँ हमने dirs क्रेट का उपयोग किया, जो सिस्टम पथों (होम फ़ोल्डर, AppData, आदि) तक क्रॉस-प्लेटफ़ॉर्म पहुँच प्रदान करता है। इसके बिना, प्रत्येक OS के लिए सशर्त कंपाइलेशन लिखना पड़ता।

\n\n

नेटवर्क और थ्रेड्स के साथ काम करना

\n

Rust की मानक लाइब्रेरी एक एकीकृत API प्रदान करती है

ब्लॉग

पुस्तक अनुशंसाएँ