Rust FFI boundaries के लिए C++
Rust FFI में उपयोग के लिए C++ functions उपलब्ध कराएँ और विपरीत दिशा भी समझें।
Rust FFI boundaries के लिए C++, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
C++ और Rust
Rust और C++ दोनों कंपाइल की जाने वाली निम्न-स्तरीय भाषाएँ हैं — लेकिन उनके ABI और प्रकार प्रणालियाँ अलग और परस्पर असंगत हैं। आमतौर पर वे C ABI ब्रिज के माध्यम से इंटरऑपरेट करते हैं।
Rust से C++: extern "C"
Rust फ़ंक्शन को extern "C" और #[no_mangle] के साथ एक्सपोर्ट करें।
// Rust
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}C++ से Rust को कॉल करना
Rust फ़ंक्शन को C++ में घोषित करें और Rust की स्थिर लाइब्रेरी से लिंक करें।
// C++
extern "C" int add(int a, int b);
std::cout << add(2, 3);C++ से Rust
उलटी दिशा — Rust, C++ को कॉल करता है। C++ को extern "C" में रैप करें और Rust में घोषित करें।
// C++
extern "C" int multiply(int a, int b) {
return a * b;
}
// Rust
extern "C" {
fn multiply(a: i32, b: i32) -> i32;
}स्थिर लाइब्रेरी को लिंक करना
Rust क्रेट को staticlib या cdylib के रूप में बनाएँ और C++ बिल्ड के साथ लिंक करें।
# Cargo.toml
[lib]
crate-type = ["staticlib"]Bindgen और Cbindgen
FFI घोषणाएँ स्वचालित रूप से बनाएँ:
- bindgen — C++ हेडर से Rust बाइंडिंग बनाएँ
- cbindgen — Rust कोड से C/C++ हेडर बनाएँ
cxx क्रेट
cxx क्रेट अधिक सुरक्षित और उच्च-स्तरीय C++/Rust इंटरऑपरेशन प्रदान करता है। एक साझा स्कीमा घोषित करें; cxx दोनों ओर मजबूत टाइपिंग वाली बाइंडिंग बनाता है।
FFI के पार मेमोरी का स्वामित्व
दोनों भाषाओं में RAII है, लेकिन उनके स्वामित्व मॉडल अलग हैं। स्वामित्व वाले डेटा को मान के रूप में और उधार लिए गए डेटा को रॉ पॉइंटर के रूप में भेजें — और स्पष्ट रूप से लिखें कि किसे क्या मुक्त करना है।
FFI के पार स्ट्रिंग
Rust String और C++ std::string असंगत हैं। *const c_char (नल-टर्मिनेटेड) या (*const u8, usize) (पॉइंटर + लंबाई) का उपयोग करें।
अपवाद बनाम पैनिक
Rust में पैनिक और C++ के अपवाद FFI सीमा पार सुरक्षित रूप से नहीं जा सकते। सीमा पर C++ के अपवाद पकड़ें; Rust की ओर std::panic::catch_unwind का उपयोग करें।
बिल्ड प्रक्रिया का एकीकरण
मेटा-बिल्ड प्रणाली का उपयोग करें: Cargo को कॉल करने वाला CMake, या बिल्ड स्क्रिप्ट (build.rs) के माध्यम से CMake को कॉल करने वाला Cargo। cxx क्रेट सामान्य प्रारूपों को संभालता है।
वास्तविक दुनिया के उदाहरण
कई उत्पादन कोड-आधार C++ और Rust को मिलाते हैं: Mozilla Firefox, C++ इंजन के भीतर Rust घटकों का उपयोग करता है; Chromium, Rust मॉड्यूल के साथ प्रयोग करता है; कई क्रिप्टो पुस्तकालय दोनों के लिए बाइंडिंग्स देते हैं।
त्वरित जाँच
कौन-सा Rust एट्रिब्यूट नाम मैंगलिंग को अक्षम करता है, ताकि C/C++ प्रतीक को ढूँढ़ सकें?
पुनरावलोकन
C++ और Rust, C ABI के माध्यम से परस्पर काम करते हैं। extern "C" और #[no_mangle] का उपयोग करें। bindgen और cbindgen से बाइंडिंग्स बनाएँ, या अधिक सुरक्षित, प्रकार-युक्त ब्रिज के लिए cxx क्रेट का उपयोग करें। सीमा पार स्वामित्व, स्ट्रिंग और पैनिक को सावधानी से संभालें।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “Rust FFI boundaries के लिए C++” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Rust FFI boundaries के लिए C++” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Rust FFI boundaries के लिए C++” में मैं क्या सीखूँगा?
Rust FFI में उपयोग के लिए C++ functions उपलब्ध कराएँ और विपरीत दिशा भी समझें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“Rust FFI boundaries के लिए C++” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Extern C और C ABI
- pybind11 के माध्यम से Python को C++ से बुलाना
- Rust FFI boundaries के लिए C++
- बहु-भाषीय bindings के लिए SWIG