Переместите методы Diesel в другие каталоги.

Я следую руководству по примерам Diesel, и мой проект выглядит точно вот так. Я хочу изменить его так, чтобы вместо запуска 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();
        }
    }
}

person Kieran E    schedule 28.06.2017    source источник


Ответы (1)


Создание папки не создает автоматически подмодуль Rust. Вам нужно сделать две вещи:

  1. Объявите модуль явно в корне контейнера (lib.rs или main.rs):

    mod controllers;
    
  2. Создайте файл controllers/mod.rs и объявите в нем подмодуль:

    mod posts;
    
person Pavel Strakhov    schedule 28.06.2017
comment
Это точно. Благодарю вас! - person Kieran E; 28.06.2017