2017-05-06 219 views
0

我想指定一個通用特徵Engine並提供兩種不同的實現:RandomDummy。我想用下列文件結構:Rust中的模塊和嵌套模塊

src- 
    |-engine 
    |-mod.rs //contains Engine trait code 
    |-random.rs // contains first engine implementation 
    |-dummy.rs // contains second engine implementation 

我在lib.rs是這樣的:

pub mod engine { 
    // random moves engine 
    pub mod random; 
    pub mod dummy; 
} 

當我嘗試在我的其他模塊添加use engine::Engine任何地方,就不能發現:

error[E0432]: unresolved import `engine::Engine` 

回答

2

當你寫一個mod項目大括號,即告訴編譯器模塊的內容在這些大括號內,而不是在外部文件中。因此,編譯器甚至沒有看到engine/mod.rs。當你編寫分號時,編譯器會尋找一個外部文件。

你需要做的,而不是什麼是把這幾行engine/mod.rs

pub mod random; 
pub mod dummy; 

而且在lib.rs,寫:

pub mod engine;