Rust中的mod.rs和嵌套模块

3
我想要指定一个通用的trait 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个回答

10

当你在mod项目中写花括号时,这告诉编译器模块的内容在这些花括号内部,而不是在外部文件中。因此,编译器甚至不会查看engine/mod.rs。相反,如果你写一个分号,编译器将会寻找一个外部文件。

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

pub mod random;
pub mod dummy;

lib.rs 中编写以下内容:
pub mod engine;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接