मैं iron>= 0.3, <= 0.4
पर निर्भरता है कि एक परियोजना निर्भरता (एक कुकी उपयोगिता) है कि है।समेकन माल निर्भरता
मेरे परियोजना लोहा 0.3
पर निर्भरता (तो मैं router
मिडलवेयर कि अभी तक नवीनतम लोहे को अपडेट नहीं किया गया उपयोग कर सकते हैं) है।
जब मैं अपनी परियोजना को संकलित करने का प्रयास करता हूं, तो कुकी उपयोगिता 0.4
लोहे के संस्करण को खींचती है, और मुझे त्रुटियां मिलती हैं क्योंकि लौह के विभिन्न संस्करणों का उपयोग किया जा रहा है।
हालांकि, मैं कर सकते हैं:
cargo update -p <cookie utility>
जो (आमतौर पर) लोहा एक मैं उपयोग कर रहा हूँ से मिलान करने पर परिवर्तन है कि पैकेज की निर्भरता, और लोहे 0.4
पर बाहरी निर्भरता को हटा। (विचित्र रूप से, मुझे कभी-कभी इसे कमांड को अद्यतन करने से पहले दो बार चलाने की ज़रूरत होती है।)
स्पष्ट रूप से मैं निर्भरता के निर्भरता संस्करण को निर्दिष्ट नहीं कर सकता: Set specific version of the dependency of a project's dependency in Cargo.toml or Cargo.lock।
यह अच्छा होगा अगर माल लगता है कि हो सकता है कि मैं लोहे का एक एकल संस्करण का उपयोग करना चाहते हैं, लेकिन मैं समझता हूँ कि ऐसा क्यों नहीं कर सकते। हालांकि, मैं उलझन में हूं कि क्यों cargo update -p <package>
वास्तव में काम करता है; ऐसा लगता है कि यह पैकेज के लिए निर्भरता को अद्यतन करेगा।
मुझे लगता है कि मेरी पहली असली सवाल यह है: मैं कैसे निर्भरता की निर्भरता संस्करणों निर्दिष्ट कर सकते हैं (जब और केवल संस्करण मैं चाहता हूँ कि पुस्तकालय के समर्थित संस्करण सीमा के भीतर हो)? मुझे नहीं लगता कि उपरोक्त प्रश्न में सुझाए गए समाधान आदर्श हैं। मुझे लगता है कि यह बेहतर होगा अगर कार्गो इस कुएं का समर्थन कर सके, ताकि पुस्तकालय अपनी निर्भरता संस्करण को अपनी कार्यक्षमता की अनुमति के रूप में खोल सकें।
एक ही समय में, मैं इस "चाल" है कि मैं क्या चाहते हैं (cargo update -p <pkg>
) करने के लिए लगता है पाया। मैंने बहुत कठिन नहीं देखा है, लेकिन इस व्यवहार को किसी भी स्पष्ट स्थान में वर्णित नहीं लगता है। मेरा दूसरा सवाल यह है: क्या यह निर्भरता को सहारा देने का एक वैध तरीका है? क्या कोई जगह है जिसके बारे में मुझे और जानकारी मिल सकती है?
और चरणों पुन: पेश करने:
- कोई नया प्रोजेक्ट बनाएं:
cargo new --bin ironapp
;cd ironapp
। - कुकी निर्भरता बनाएं:
cargo new cookie_util
।iron = ">= 0.3, <= 0.4"
: cookie_util/Cargo.toml
में एक निर्भरता जोड़ें।iron = "0.3.0"
औरcookie_util = { path = "cookie_util"}
:Cargo.toml
में दो निर्भरता जोड़ें।cargo build
। पुष्टि करें किCargo.lock
में लौह के दो संस्करणों की आवश्यकता है।cargo update -p cookie_util
रन 1 और 4 (या अधिक) समय के बीच कहीं भी चलाएं। आखिरकार यहiron 0.4.0
पर निर्भरता को हटा देगा।
मैंने बस इसे rustc-1.10.0/कार्गो-0.11.0 पर परीक्षण किया। मैंने सुनिश्चित किया है कि चरण 1 की शुरुआत में target
और Cargo.lock
दोनों अनुपस्थित थे।
यह एक समस्या [यहां] (https://github.com/rust-lang/cargo/issues) बनाने के लायक हो सकता है। – squiguy
मैं @squiguy से टिप्पणी दूसरी बार; एक मुद्दा बनाओ। हालांकि, सुनिश्चित करें कि आप समस्या दर्ज करते समय ** [MCVE] ** प्रदान करें। और यहाँ। – Shepmaster
टिप्पणियों के लिए धन्यवाद। मैंने अपने प्रश्नों को थोड़ा सा स्पष्ट करने की कोशिश की है –