मैं वास्तव में एक फ़ाइल (मॉड्यूल) से दूसरे में फ़ंक्शन (या आयात, इंजेक्ट या smth।) फ़ंक्शन को शामिल नहीं कर सकता।जंग मूल आयात (शामिल)
यहां उदाहरण है।
मैं
cd ~/projects
cargo new proj --bin
cd proj
tree
# output
.
|
-- Cargo.toml
-- src
|
-- main.rs
के साथ एक नई परियोजना शुरू तो मैं main.rs
को संशोधित करने और निम्न कोड के साथ एक नई फ़ाइल a.rs
(src
निर्देशिका के अंदर) बनाने के लिए:
// main.rs
fn main() { println!("{}", a::foo()); }
// a.rs
pub fn foo() -> int { 42i }
मैं cargo run
के साथ इस परियोजना को चलाने
यहां मेरे पास दो त्रुटियां हैं:
- src/main.rs: 2: 20: 2:26 त्रुटि: हल करने में विफल। अविकसित मॉड्यूल का उपयोग
a
- src/main.rs: 2: 20: 2:26 त्रुटि: अनसुलझा नाम
a::foo
।
अब के लिए यह स्पष्ट है, मुझे किसी भी तरह a
आयात करने की आवश्यकता है।
मैं main.rs
use a;
करने के लिए एक पहली पंक्ति के रूप निम्नलिखित बातें जोड़ने की कोशिश की -> त्रुटि: अनसुलझे आयात (? हो सकता है आपa::*
मतलब)use a::*;
-> त्रुटि: ग्लोब आयात बयान प्रयोगात्मक हैं और संभवतः छोटी गाड़ीuse a::foo;
-> त्रुटि: अनसुलझा आयातa::foo
। शायद एक लापताextern crate a
?extern crate a; use a::foo;
-> त्रुटि:a
extern crate proj; use proj::a::foo;
के लिए टोकरा नहीं मिल सकता है -> त्रुटि: के लिएproj
टोकरा नहीं मिल सकता है मैं the guide at rust-lang पढ़ लिया है, लेकिन अभी भी आयात करने के लिए कैसे को समझ नहीं सकता ।
तो 'बाहरी क्रेट' कब आवश्यक है? मैंने सोचा कि हर जंग फ़ाइल एक अलग क्रेट (संकलन की इकाई) थी। – voithos
@voithos आपका main.rs या lib.rs और सभी फाइलें जो इसे 'mod' निर्देशों के माध्यम से पुनरावर्तक रूप से उलट देती हैं उन्हें एक क्रेट के रूप में संकलित किया जाएगा। यह संकलन की इकाई है। – Levans
'लेकिन मॉड्यूल सिस्टम में किए गए किसी भी बदलाव को" बहुत भ्रमित "के रूप में अस्वीकार कर दिया जाएगा, मौजूदा मॉड्यूल सिस्टम" बहुत भ्रमित "है। – Qix