【发布时间】:2021-11-05 18:14:32
【问题描述】:
我正在学习rust,现在尝试导入一个struct,这是源文件路径app_root/src/model/response/playlist_response.rs,我正在导入另一个这样的struct:
#[path = "../../models.rs"]
mod models;
use models::QueryPlaylist;
model.rs 路径为app_root/src/models.rs,models.rs 文件如下所示:
use super::schema::posts;
use super::schema::playing_record;
use super::schema::favorites;
use super::schema::songs;
use super::schema::playlist;
use super::schema::album;
use rocket::serde::Serialize;
#[derive(Insertable,Serialize,Queryable)]
#[table_name="playlist"]
pub struct QueryPlaylist {
pub id: i64,
pub creator: i64,
pub name: String,
pub cover_url: Option<String>,
pub description: Option<String>,
pub subscribed: Option<i32>,
pub subscribed_count: Option<i64>,
pub comment_count: Option<i64>,
pub share_count: Option<i32>,
pub play_count: Option<i32>
}
当我编译项目时,显示如下错误:
$ cargo build ‹ruby-2.7.2›
Compiling reddwarf_music v0.1.0 (/Users/dolphin/Documents/GitHub/reddwarf_music)
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:1:12
|
1 | use super::schema::posts;
| ^^^^^^ could not find `schema` in `super`
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:2:12
|
2 | use super::schema::playing_record;
| ^^^^^^ could not find `schema` in `super`
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:3:12
|
3 | use super::schema::favorites;
| ^^^^^^ could not find `schema` in `super`
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:4:12
|
4 | use super::schema::songs;
| ^^^^^^ could not find `schema` in `super`
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:5:12
|
5 | use super::schema::playlist;
| ^^^^^^ could not find `schema` in `super`
error[E0432]: unresolved import `super::schema`
--> src/biz/music/../../model/response/../../models.rs:6:12
|
6 | use super::schema::album;
| ^^^^^^ could not find `schema` in `super`
schema.rs 文件路径是app_root/src/schema.rs。我使用错误的方式导入?这样的问题是什么?我应该怎么做才能让它工作?这是main.rs:
#[macro_use]
extern crate rocket;
#[macro_use]
extern crate diesel;
// #[macro_use]
// extern crate redis;
#[path="biz/music/music.rs"] mod music;
#[path="config/db/config.rs"] mod config;
#[path="biz/music/songs.rs"] mod songs;
#[path="biz/music/test.rs"] mod test;
#[path="biz/user/user.rs"] mod user;
#[path="biz/music/playlist.rs"] mod playlist;
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/music/music", routes![music::play_record,music::save_play_record,music::like,music::dislike])
.mount("/music/songs",routes![songs::detail])
.mount("/music/user",routes![user::recent_found])
.mount("/music/playlist",routes![playlist::user_playlist])
.mount("/music/test", routes![test::detail])
}
【问题讨论】:
-
您是否将
src/models.rs和src/schema.rs导入或在main.rs中声明为mod models;和mod schema;? -
是的,我已将
models.rs和schema.rs作为 mod 导入到main.rs。 @kmdreko -
我已经粘贴了我的
main.rs@kmdreko
标签: rust