2015-09-09 6 views
5
mod simulation; 

use simulation::factory::FactoryType; 

main.rs में ठीक काम करता है, लेकिन simulation/factory.rs अंदर एक doctest में नहीं:मैं एक डॉक्टर के अंदर एक कस्टम मॉड्यूल का उपयोग कैसे कर सकता हूं?

impl product_type::ProductType for FactoryType { 
    /// Lorem Ipsum 
    /// 
    /// # Examples 
    /// 
    /// ``` 
    /// use simulation::factory::FactoryType; 
    /// 
    /// ... 
    /// ``` 
    fn human_id(&self) -> &String { 
     ... 
    } 
} 

cargo test मुझे त्रुटि

---- simulation::factory::human_id_0 stdout ---- 
    <anon>:2:9: 2:19 error: unresolved import `simulation::factory::FactoryType`. Maybe a missing `extern crate simulation`? 
<anon>:2  use simulation::factory::FactoryType; 
       ^~~~~~~~~~ 
error: aborting due to previous error 
thread 'simulation::factory::human_id_0' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:192 

मैं कैसे doctests काम करने के लिए प्राप्त कर सकते हैं देता है?

+1

यदि आप बाइनरी बना रहे हैं (उदाहरण के लिए यदि किसी के पास 'src/lib.rs' के बजाय 'src/main.rs' है) तो आप इसे किसी कार्य में फ़ंक्शंस का उपयोग नहीं कर सकते: दस्तावेज़ परीक्षण आयात करते हैं क्रेट वे पुस्तकालय के रूप में हैं (यदि यह एक है)। – huon

+0

सहायता मांगते समय कृपया एक [एमसीवीई] (/ सहायता/एमसीवी) बनाने के लिए समय लें। जैसा कि आपने वर्तमान में अपना प्रश्न बताया है, हमें यह जानने के लिए बहुत कुछ अनुमान लगाना है कि वास्तव में क्या मौजूद है। – Shepmaster

उत्तर

6

आप किसी दस्तावेज़ को परीक्षण लिखने, तो आप अपने कोड होगा की उपयोगकर्ता के रूप में कार्य किया है। यह देखते हुए इन फ़ाइलों:

src/lib.rs

pub mod simulation { 
    pub mod factory { 
     pub struct FactoryType; 

     impl FactoryType { 
      /// ``` 
      /// use foo::simulation::factory::FactoryType; 
      /// 
      /// let f = FactoryType; 
      /// assert_eq!(42, f.human_id()) 
      /// ``` 
      pub fn human_id(&self) -> u8 { 41 } 
     } 
    } 
} 

src/main.rs

extern crate foo; 
use foo::simulation::factory::FactoryType; 

fn main() { 
    let f = FactoryType; 
    println!("{}", f.human_id()); 
} 

सब कुछ काम करता है। ध्यान दें कि main.rs में, आपको extern crate कहना है, तो आपके सभी संदर्भों में क्रेट नाम शामिल करने की आवश्यकता है। सबसे अच्छा तरीका है, extern crate को छोड़कर स्वचालित रूप से आपके लिए शामिल किया गया है।

3

जैसा कि ह्यूओन-डीबीयूपीपी ने नोट किया, बिन क्रेट्स को डॉक्टर परीक्षण से आयात नहीं किया जा सकता है।

समाधान आपके अधिकांश कोड को लाइब्रेरी क्रेट के रूप में परिभाषित करना है और एक बाइनरी है जो उसके आस-पास एक खोल है।

उदाहरण के लिए, racer इस तकनीक को नियुक्त करता है।

+0

वही सी # के बारे में सच था जब तक कि वे इसे पूर्व में परीक्षण के लिए तय नहीं करते। जंग पर आओ, गॉथस हटा दें। – Squirrel

संबंधित मुद्दे

 संबंधित मुद्दे