You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust模块可见性与Queryable宏编译错误求助

解决Rust Diesel Queryable宏找不到的编译错误

问题原因

子模块(test.rs、schema.rs)未在自身作用域内导入Diesel的宏或prelude,导致编译时无法识别Queryable和table!这类Diesel提供的宏。Rust的模块作用域是独立的,根模块导入的依赖不会自动传递给子模块。

解决方案

1. 为test.rs添加Diesel导入

在test.rs顶部添加Diesel prelude的导入,确保Queryable宏和NaiveDateTime可用:

use diesel::prelude::*;
use chrono::NaiveDateTime;

#[derive(Queryable)]
pub struct User {
    pub id: i32,
    pub publickey: String,
    pub createdat: NaiveDateTime,
}

如果不需要全部prelude,也可以单独导入Queryable宏:

use diesel::Queryable;
use chrono::NaiveDateTime;

2. 为schema.rs添加Diesel导入

在schema.rs顶部导入Diesel的prelude(确保diesel crate在作用域内):

use diesel::prelude::*;

diesel::table! {
    login_action (id) {
        id -> Int4,
        publickey -> Varchar,
        actiondata -> Timestamp,
    }
}

3. 检查Cargo.toml依赖配置

确保Diesel依赖启用了对应数据库和chrono特性(如果用到NaiveDateTime):

[dependencies]
diesel = { version = "2.0", features = ["postgres", "chrono"] } # 替换为你的数据库类型(mysql/sqlite)
chrono = "0.4"

4. 正确的模块引用方式

在main.rs中通过pub mod test导出模块后,其他模块可以通过以下方式引用User结构体:

use crate::test::User;

内容的提问来源于stack exchange,提问作者xy01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:02:40