将Diesel方法移动到其他目录中

时间:2017-06-28 19:17:07

标签: rust rust-diesel

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

我已将所有内容从bin/移到controllers/目录中。我想在main.rs中将此作为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();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

制作文件夹不会自动生成Rust子模块。你需要做两件事:

  1. 在包根(lib.rsmain.rs)中明确声明模块:

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

    mod posts;