Задать вопрос
Zagir-vip
@Zagir-vip
Web dev, Game dev, app dev, Разработчик на Python!

Rust как подключить внешний файл в модуле?

Как мне в файле lib.rs:
use sqlx::{SqlitePool, query};

// mod db; // ошибка

pub mod cmd {
    use sqlx::{SqlitePool, query};
    mod db; // ошибка
    
    #[tauri::command]
    pub fn greet(name: &str) -> String {
        format!("Hello, {}! You've been greeted from Rust!", name)
    }
}

Подключить файл db.rs (mod db;)

сам файл db.rs:

mod db;
use sqlx::{Result, SqlitePool, query, query_as};

pub async fn connect_db() -> Result<SqlitePool> {
	let pool = SqlitePool::connect("sqlite://passwordsx.db").await?;
	Ok(pool)
}


Ошибка:
error[E0583]: file not found for module `db`
 --> src\lib.rs:7:5
  |
7 |     mod db;
  |     ^^^^^^^
  |
  = help: to create the module `db`, create file "src\cmd\db.rs" or "src\cmd\db\mod.rs"
  = note: if there is a `mod db` elsewhere in the crate already, import it with `use crate::...` instead


Структура проекта:
Project:
   src:
      main.rs
      lib.rs
      db.rs


Я уже 3ч маучаюсь с этой ошибкой...
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347
Crazy on performance...
Структура модулей в крейте с точностью повторяет структуру файлов на диске, даже если модуль объявлен внутри модуля не вынесеного в отдельный файл.
То есть одно и то же объявление mod db;будет искать файл в разных местах, в зависимости от того, где оно написано:
  • если написать в корне src/lib.rs то будет искать src/db.rs или src/db/mod.rs
  • если написать в модуле cmd внутри src/lib.rs то будет искать src/cmd/db.rs или src/cmd/db/mod.rs

Но у меня большое подозрение, что Вы вообще не понимаете, как работает ключевое слово mod, ибо напихали его где только можно, включая сам db.rs (там будет искать src/db/db.rs кстати). Ключевое слово mod подключает модуль как дочерний того модуля, где оно написано. А для импорта имён нужно использовать use.

И как верно подметил fenrir, если бы Вы внимательно прочитали растбук, то Вы бы это поняли.
Ответ написан
fenrir1121
@fenrir1121
Начни с документации
Я уже 3ч маучаюсь с этой ошибкой...
А мог за 15 минут прочитать 7 главу растбука, где все разобрано.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы