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

Rust Diesel生成schema.rs后递归限制设置无效,求正确位置

解决Diesel递归限制错误的正确位置设置
  • #![recursion_limit = "N"] 是crate级属性,必须放在项目的crate根文件最顶部才能全局生效:

    • 若为二进制项目(包含main.rs),将该属性写在main.rs的第一行,所有代码(use声明、mod引入等)之前
    • 若为库项目(包含lib.rs),将该属性写在lib.rs的第一行
  • 之前放在models.rs或schema.rs无效的原因:这类子模块的属性仅作用于当前模块,而Diesel的__diesel_parse_columns!宏是在crate全局层面展开的,子模块的递归限制设置无法覆盖全局。

  • 针对你400+表、部分表200+列的场景,256的上限可能仍然不足,建议直接调高数值(比如1024),示例如下:

二进制项目main.rs开头:

#![recursion_limit = "1024"]

use diesel::prelude::*;
mod schema;
mod models;

fn main() {
    // 业务代码
}

库项目lib.rs开头:

#![recursion_limit = "1024"]

pub use diesel::prelude::*;
pub mod schema;
pub mod models;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:01:25