我想出了如何使Diesel与我的项目一起工作,但是当我尝试使用架构模块中的功能时,安装了RLS扩展的VS Code没有提供代码完成建议。
我还尝试通过IntelliJ Rust插件获得建议,但没有成功;也许我想念一些东西。问题似乎出在宏用法上。
#[macro_use]
extern crate diesel;
use diesel::prelude::*;
mod db;
mod models;
mod schema;
use models::post::Post;
#[get("/")]
fn main() {
use schema::posts::dsl::*;
let connection = db::establish_connection();
let results = posts.load::<Post>(&connection).unwrap();
for post in results {
println!("{}", post.content);
}
}
该代码可以正常工作,但是在编写posts
之后,我从VS Code中什么也没得到。或schema::
。
在我看来,这是Diesel的一项重要功能,我不敢相信使用它不可能完成代码。
答案 0 :(得分:0)
Intellij-rust目前具有非常差的宏/生成代码支持。柴油生成的文件处于想法的索引路径中时,其内部使用宏使其无法扩展和获取自动补全,因为运行宏需要执行柴油程序宏,因此会产生实际的过程,从而使其无法自动完成在性能方面。
如果您真的想要这样的东西,那么非常麻烦但几乎无法使用的事情是使用cargo expand
扩展柴油生成的模块,然后复制并粘贴结果以代替柴油宏调用。但是,每次执行此操作都是不切实际的,尤其是对于VCS,但这对于学习柴油API可能有用。