Rust中的mod.rs和嵌套模块

时间:2017-05-06 20:03:16

标签: rust

我想指定一个通用特征Engine并提供两种不同的实现:RandomDummy。我想使用以下文件结构:

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`

1 个答案:

答案 0 :(得分:2)

当您在mod项中编写大括号时,它告诉编译器模块的内容在这些大括号内,而不在外部文件中。因此,编译器甚至不会查看engine/mod.rs。当您编写分号时,编译器将查找外部文件。

您需要做的是将这些行放在engine/mod.rs

pub mod random;
pub mod dummy;

lib.rs中,写一下:

pub mod engine;