【问题标题】:Move Diesel methods into other directories将 Diesel 方法移动到其他目录
【发布时间】:2017-12-02 07:26:55
【问题描述】:

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

我已将所有内容移出 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();
        }
    }
}

【问题讨论】:

    标签: rust rust-diesel


    【解决方案1】:

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

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

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

      mod posts;
      

    【讨论】:

    • 就是这样。谢谢!
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多