2017-05-06 118 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;