में साझा तर्क होने:
// euler/shared/lib.rs
pub fn foo() {
println!("shared::foo()");
}
मैं इसे विभिन्न फ़ाइलों से कैसे उपयोग कर सकता हूं:
// euler/001/main.rs
use super::shared; // error: unresolved import `super::shared`
fn main() {
shared::foo(); // how to access it?
}
// euler/002/main.rs
use super::shared; // error: unresolved import `super::shared`
fn main() {
shared::foo(); // how to access it?
}
उत्तर:
जवाब के लिए 5 № 1mdup का जवाब सही है, लेकिन मैं आपको कार्गो, रस्ट के पैकेज मैनेजर का उपयोग करने के लिए प्रोत्साहित करता हूं। यह यहाँ आपके लिए दो बहुत महत्वपूर्ण काम करेगा:
- करने के लिए सही कमांड लाइन तर्क सेट करें
rustc
. - जब वे बदलते हैं तो स्वचालित रूप से निर्भर पुस्तकालयों का पुनर्निर्माण करें।
उपयोग cargo new shared
तथा cargo new --bin euler-001
सही निर्देशिका संरचना उत्पन्न करने के लिए। अपना साझा कोड ले जाएँ shared/src/lib.rs
और अपने बायनेरिज़ को euler-001/src/main.rs
:
.
├── euler-001
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── shared
├── Cargo.toml
└── src
└── lib.rs
फिर, संपादित करें euler-001/Cargo.toml
और निर्भरता अनुभाग जोड़ें:
[dependencies.shared]
path = "../shared"
और अपने ट्वीक करें main.rs
टोकरा के बारे में जानने के लिए:
extern crate shared;
fn main() {
shared::foo();
}
अब, आप बस टाइप कर सकते हैं cargo run
में euler-001
निर्देशिका:
$ cargo run
Compiling shared v0.1.0 (file:///private/tmp/play/euler-001)
Compiling euler-001 v0.1.0 (file:///private/tmp/play/euler-001)
Running `target/debug/euler-001`
shared::foo()
ध्यान दें कि आपको कमांड लाइन के तर्कों को याद नहीं रखना है और चीजें आपके लिए संकलित हैं! बिल्ट-इन पैकेज मैनेजर महान है!
जवाब के लिए 4 № 2
एक समाधान साझा कोड से बाहर एक पुस्तकालय बनाने के लिए है। यह आपको एक का उपयोग करने की अनुमति देगा extern crate
घोषणा।
// euler/shared/shared.rs
pub fn foo() {
println!("shared::foo()");
}
परिवाद संकलित करने के लिए:
$ cd euler/shared
$ rustc --crate-type=lib shared.rs
$ ls -l libshared.rlib
-rw-r--r-- 1 mdup wheel 6758 May 17 14:38 libshared.rlib
यहाँ आप इसे "क्लाइंट" कोड में कैसे उपयोग करते हैं:
// euler/001/main.rs
extern crate shared;
fn main() {
shared::foo();
}
ग्राहक को संकलित करें:
$ cd euler/001
$ rustc -L ../shared main.rs
$ ls -l main
-rwxr-xr-x 1 mdup wheel 291420 May 17 14:42 main
$ ./main
shared::foo()
में अधिक जानकारी उदाहरण द्वारा जंग, अनुभाग "बक्से", पृष्ठ "लाइब्रेरी" तथा "बाहरी टोकरा".