मैं कोड जनरेशन के लिए build.rs नामक रस्ट स्क्रिप्ट का उपयोग कर रहा हूं (यह कार्गो बिल्ड स्क्रिप्ट नहीं है)। लिपि में यह शीर्ष पर है:

extern crate reqwest;

यह मेरी Cargo.toml फ़ाइल है:

[package]
name = "my-script"
version = "0.1.0"
edition = "2018"

[[bin]]
path = "build.rs"
name = "builder"

[dependencies]
reqwest = { version = "0.10", features = ["blocking", "json"] }

जब मैं cargo run करता हूं, तो यह मुझे यह त्रुटि देता है:

error[E0463]: can't find crate for `reqwest`
 --> build.rs:1:1
  |
1 | extern crate reqwest;
  | ^^^^^^^^^^^^^^^^^^^^^ can't find crate

मैं इसे reqwest टोकरा खोजने में कैसे सक्षम बनाऊं?

3
Dull Bananas 16 अक्टूबर 2020, 21:50

2 जवाब

सबसे बढ़िया उत्तर

build.rs कार्गो बिल्ड स्क्रिप्ट, जो कोड जनरेट करने के लिए बिल्ड टाइम पर चलाया जाता है, C लाइब्रेरी में लिंक आदि।

चूंकि कार्गो देखता है कि आपके पास आपकी प्रोजेक्ट निर्देशिका में build.rs है, यह इसे एक बिल्ड स्क्रिप्ट मानता है और इसे बनाने का प्रयास करता है। हालाँकि बिल्ड स्क्रिप्ट सामान्य निर्भरता का उपयोग नहीं करते हैं और इसके बजाय [build-dependencies] Cargo.toml के अनुभाग से निर्भरता का उपयोग करते हैं। चूंकि आपके पास एक नहीं है, इसलिए reqwest क्रेट बिल्ड स्क्रिप्ट के लिए उपलब्ध नहीं है।

फ़ाइल का नाम बदलना एक स्पष्ट फिक्स है। हालांकि सम्मेलन निष्पादन योग्य को आपकी परियोजना की bin/ निर्देशिका में रखना है (कार्गो स्वचालित रूप से आपके लिए वहां फाइलें भी ढूंढेगा)।

2
Colonel Thirty Two 17 अक्टूबर 2020, 00:11

build.rs स्क्रिप्ट को एक अलग नाम की आवश्यकता है। build.rs का नाम बदलकर builder.rs करें और Cargo.toml को अपडेट करें:

path = "builder.rs"

आप extern crate reqwest स्टेटमेंट को भी हटा सकते हैं क्योंकि यह कार्गो द्वारा अनुमान लगाया गया है।

0
Dull Bananas 16 अक्टूबर 2020, 21:50