一旦我包含一个文件,柴油和火箭进口就会中断

问题描述

我有一个包含 postgres 数据库表结构的文件“user.rs”。每当我尝试将它包含在我的 main.rs 文件一个 Rocket web 项目)中时,所有的 Diesel “东西”都无法解析。这是我的 user.js 文件

const PapeConainer = () => {
  return (
    <div //some classes and other stuff>
     {magic.children}
    </div>
  );
}

这是我的 main.rs:

var slider_img = document.querySelector('.shoe_image');
var images = ['shoe_green.png','shoe_red.png','shoe_blue.png','shoe_yellow.png','shoe_black.png'];
var i = 0; //Index of current image

function prev() //'PrevIoUs' button
{
    if(i <= 0) i = 5;
    i--;
    return setImg();
}

function next() //'Next' button
{
    if(i >= 4) i = -1;
    i++;
    return setImg();
}

function setImg() //Setting image in slider
{
    return slider_img.setAttribute('src','images/shoes/'+images[i]);
}

如果我从 main.rs 中删除 use super::schema::users; pub mod handler; pub mod repository; pub mod router; #[derive(Queryable,AsChangeset,Serialize,Deserialize)] #[table_name = "users"] pub struct User { pub id: String,pub username: String,pub password: String,} #[derive(Insertable)] #[table_name = "users"] pub struct Insertableuser { username: String,password: String,} pub impl Insertableuser { pub fn from_user(user: User) -> Insertableuser { Insertableuser { username: user.username,password: user.password,} } } pub fn all(connection: &PgConnection) -> QueryResult<Vec<User>> { users::table.load::<User>(&*connection) } pub fn get(id: i32,connection: &PgConnection) -> QueryResult<User> { users::table.find(id).get_result::<User>(connection) } pub fn insert(user: User,connection: &PgConnection) -> QueryResult<User> { diesel::insert_into(users::table) .values(&Insertableuser::from_user(user)) .get_result(connection) } pub fn update(id: i32,user: User,connection: &PgConnection) -> QueryResult<User> { diesel::update(users::table.find(id)) .set(&user) .get_result(connection) } pub fn delete(id: i32,connection: &PgConnection) -> QueryResult<usize> { diesel::delete(users::table.find(id)).execute(connection) } ,则不会出现错误。当我运行 #![feature(proc_macro_hygiene,decl_macro)] #[macro_use] extern crate rocket; #[macro_use] extern crate rocket_contrib; use rocket_contrib::databases::diesel; #[database("camera-server-db")] struct CameraServerDbConn(diesel::PgConnection); mod user; #[get("/")] fn index() -> &'static str { "Hello World!" } fn main() { rocket::ignite() .attach(CameraServerDbConn::fairing()) .mount("/",routes![index]) .launch(); } 时,我得到很多“在此范围内找不到 x”。举个例子:

mod user;

我正在尝试遵循 this guide(这确实已经过时了,但它是我能找到的仅有的实际指南之一)。

解决方法

如“最后一步”部分的链接指南中所述,您需要正确导入柴油,否则编译器无法解析这些特征/派生/函数。这意味着您需要按如下方式更改您的 main.rs 文件:

#![feature(proc_macro_hygiene,decl_macro)]

#[macro_use]
extern crate rocket;

#[macro_use]
extern crate rocket_contrib;

#[macro_use]
extern crate diesel;

use rocket_contrib::databases::diesel;

#[database("camera-server-db")]
struct CameraServerDbConn(diesel::PgConnection);

mod user;

#[get("/")]
fn index() -> &'static str {
    "Hello World!"
}

fn main() {
    rocket::ignite()
        .attach(CameraServerDbConn::fairing())
        .mount("/",routes![index])
        .launch();
}

(注意 extern crate 部分中的额外 #[macro_use] extern crate diesel;。)