Переместить дизельные методы в другие каталоги
Я следую руководству по примерам 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();
}
}
}
1 ответ
Создание папки не создает подмодуль Rust автоматически. Вам нужно сделать две вещи:
Объявите модуль явно в корне ящика (
lib.rs
или жеmain.rs
):mod controllers;
Создайте
controllers/mod.rs
файл и объявить в нем подмодуль:mod posts;