रस्ट एक गोंद के रूप में: पायथन, सी और अन्य भाषाओं के साथ एकीकरण

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

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

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

रस्ट एक सार्वभौमिक गोंद के रूप में: अन्य भाषाओं के साथ एकीकरण क्यों एक सुपरपावर है

\n\n

क्या आपने कभी रस्ट में एक उच्च-प्रदर्शन मॉड्यूल लिखने का सपना देखा है, लेकिन पूरे प्रोजेक्ट को पायथन में फिर से नहीं लिखना चाहते थे? या हो सकता है, आपको एक पुरानी C-लाइब्रेरी में सुरक्षित मेमोरी प्रबंधन जोड़ने की आवश्यकता हो? रस्ट का अन्य भाषाओं के साथ एकीकरण की दुनिया में आपका स्वागत है। यहाँ रस्ट केवल एक स्वतंत्र भाषा के रूप में नहीं, बल्कि एक शक्तिशाली "गोंद" के रूप में कार्य करता है जो पारिस्थितिक तंत्रों को जोड़ता है।

\n\n

pythonlib.ru पर हम अक्सर पायथन के बारे में बात करते हैं, लेकिन आज हम एक शानदार मोड़ लेंगे। रस्ट केवल गति और सुरक्षा ही नहीं है, बल्कि अविश्वसनीय लचीलापन भी है। यह PyO3 के माध्यम से पायथन के साथ एकीकृत हो सकता है, FFI के माध्यम से C-फ़ंक्शन को कॉल कर सकता है, और ब्राउज़र के लिए WebAssembly में भी कंपाइल हो सकता है। इस लेख में, हम तीन मुख्य परिदृश्यों का विश्लेषण करेंगे, वास्तविक कोड दिखाएंगे और व्यावहारिक सुझाव देंगे। चलिए शुरू करते हैं!

\n\n

रस्ट को अन्य भाषाओं के साथ क्यों एकीकृत करें?

\n\n

कल्पना करें: आपके पास पायथन में एक बहुत बड़ा प्रोजेक्ट है जो लूप के कारण धीमा चल रहा है। आप महत्वपूर्ण भाग को रस्ट में फिर से लिख सकते हैं, 10-100 गुना गति प्राप्त कर सकते हैं और बाकी कोड को नहीं छू सकते हैं। या आप एक पुरानी C-लाइब्रेरी के साथ काम कर रहे हैं और इसे एक सुरक्षित रस्ट इंटरफ़ेस में लपेटना चाहते हैं। रस्ट इसके लिए Foreign Function Interface (FFI) के कारण आदर्श है।

\n\n

एकीकरण के मुख्य कारण:

\n
    \n
  • प्रदर्शन — रस्ट कम्प्यूटेशनल कार्यों में पायथन और जावास्क्रिप्ट से तेज़ है।
  • \n
  • सुरक्षा — रस्ट मेमोरी लीक और डेटा रेस से बचाता है, जो C/C++ के लिए महत्वपूर्ण है।
  • \n
  • पारिस्थितिकी तंत्र — आप अपनी मूल भाषा को छोड़े बिना रस्ट लाइब्रेरीज़ तक पहुँच प्राप्त करते हैं।
  • \n
  • WebAssembly — रस्ट कोड ब्राउज़र में लगभग नेटिव गति से चलता है।
  • \n
\n\n

PyO3 के माध्यम से रस्ट का पायथन के साथ एकीकरण

\n\n

PyO3 रस्ट और पायथन को जोड़ने का सबसे लोकप्रिय तरीका है। आप रस्ट में फ़ंक्शन लिखते हैं, उन्हें नेटिव मॉड्यूल (.so या .pyd) में कंपाइल करते हैं और उन्हें सामान्य पायथन मॉड्यूल की तरह इम्पोर्ट करते हैं। जादू जैसा लगता है? वास्तव में, यह सरल है।

\n\n

स्थापना और सेटअप

\n

शुरू करने के लिए, maturin इंस्टॉल करें — पायथन रस्ट एक्सटेंशन बनाने का टूल:

\n
pip install maturin
\n

एक नया प्रोजेक्ट बनाएँ:

\n
maturin init --bindings pyo3
\n

यह Cargo.toml और lib.rs फ़ाइल के साथ एक संरचना बनाएगा।

\n\n

उदाहरण: गणनाओं को तेज़ करना

\n

मान लीजिए, हमें जल्दी से फिबोनाची संख्याओं की गणना करनी है। पायथन में यह धीमा हो सकता है, लेकिन रस्ट में बिजली की गति से। यहाँ src/lib.rs में कोड है:

\n
use pyo3::prelude::*;\n\n#[pyfunction]\nfn fibonacci(n: u32) -> u64 {\n    match n {\n        0 => 0,\n        1 => 1,\n        _ => fibonacci(n - 1) + fibonacci(n - 2),\n    }\n}\n\n#[pymodule]\nfn rust_fib(_py: Python, m: &PyModule) -> PyResult<()> {\n    m.add_function(wrap_pyfunction!(fibonacci, m)?)?;\n    Ok(())\n}
\n

मॉड्यूल बनाएँ:

\n
maturin develop
\n

अब पायथन में:

\n
import rust_fib\nprint(rust_fib.fibonacci(40))  # 102334155
\n

शुद्ध पायथन के साथ गति की तुलना करें — अंतर दसियों गुना होगा! यह अनुकूलन के लिए रस्ट का पायथन के साथ एकीकरण का एक आदर्श उदाहरण है।

\n\n

जटिल डेटा का स्थानांतरण

\n

PyO3 केवल संख्याओं का ही नहीं, बल्कि सूचियों, शब्दकोशों और यहाँ तक कि numpy-ऐरे का भी समर्थन करता है। उदाहरण के लिए, एक सूची पास करें और इसे रस्ट में प्रोसेस करें:

\n
#[pyfunction]\nfn sum_list(numbers: Vec<i32>) -> i32 {\n    numbers.iter().sum()\n}
\n

पायथन में:

\n
print(rust_fib.sum_list([1, 2, 3, 4]))  # 10
\n

यह डेटा साइंस और वेब डेवलपमेंट में रस्ट का पायथन के साथ एकीकरण के लिए बड़ी संभावनाएँ खोलता है।

\n\n

रस्ट और सी: क्लासिक FFI

\n\n

रस्ट को C/C++ के विकल्प के रूप में बनाया गया था, इसलिए FFI रस्ट इसकी मूल शैली है।

ब्लॉग

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