/ / मैं विभिन्न फ़ाइलों से साझा तर्क का उपयोग कैसे कर सकता हूं? - जंग

मैं अलग-अलग फाइलों से साझा तर्क का उपयोग कैसे कर सकता हूं? - जंग

में साझा तर्क होने:

// 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 № 1

mdup का जवाब सही है, लेकिन मैं आपको कार्गो, रस्ट के पैकेज मैनेजर का उपयोग करने के लिए प्रोत्साहित करता हूं। यह यहाँ आपके लिए दो बहुत महत्वपूर्ण काम करेगा:

  1. करने के लिए सही कमांड लाइन तर्क सेट करें rustc.
  2. जब वे बदलते हैं तो स्वचालित रूप से निर्भर पुस्तकालयों का पुनर्निर्माण करें।

उपयोग 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()

में अधिक जानकारी उदाहरण द्वारा जंग, अनुभाग "बक्से", पृष्ठ "लाइब्रेरी" तथा "बाहरी टोकरा".