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
相关产品推荐
相关产品推荐

