Rust中的mod.rs和嵌套模块

Gra*_*ayR 0 rust

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

src-
  |-engine
    |-mod.rs //contains Engine trait code
    |-random.rs // contains first engine implementation
    |-dummy.rs // contains second engine implementation
Run Code Online (Sandbox Code Playgroud)

我在lib.rs中有这样的内容

pub mod engine {
    // random moves engine
    pub mod random;
    pub mod dummy;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试use engine::Engine在其他模块中的任何位置添加内容时,找不到它:

pub mod engine {
    // random moves engine
    pub mod random;
    pub mod dummy;
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*gné 5

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

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

pub mod random;
pub mod dummy;
Run Code Online (Sandbox Code Playgroud)

然后在中输入lib.rs

pub mod engine;
Run Code Online (Sandbox Code Playgroud)