0

我正在遵循 Diesel 示例指南,我的项目看起来就像这样。我想更改它,以便cargo run --bin publish_post 1您使用cargo run并显示一个循环,提示您执行要运行的操作,而不是运行。

我已将所有内容移出bin/和移入controllers/目录。我想在main.rsas中引用它use controllers::post,所以我可以访问post::delete(),等等。

一旦我将文件移出bin/,所有导入都会中断。同样,我无法从lib.rs.

为什么移动文件后我的所有导入都不起作用?我如何从这些文件中访问方法?

我想要这样的结构:

├── controllers
│   └── posts.rs
├── lib.rs
├── main.rs
├── models.rs
├── schema.rs

在 内main.rs,我希望能够执行以下操作:

use controllers::posts;

pub fn main() {
    // pseudocode
    loop {
        println!("what action would you like to perform?");
        let ans = capture_input();

        if ans == "insert" {
            posts::insert();
        } else if ans == "delete" {
            posts::delete();
        }
    }
}
4

1 回答 1

2

创建文件夹不会自动创建 Rust 子模块。你需要做两件事:

  1. 在 crate 根目录(lib.rsmain.rs)中显式声明模块:

    mod controllers;
    
  2. 创建controllers/mod.rs文件并在其中声明一个子模块:

    mod posts;
    
于 2017-06-28T20:34:28.220 回答