如何获得Diesel模式模块的自动完成功能?

时间:2019-08-13 01:04:02

标签: rust rust-diesel

我想出了如何使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的一项重要功能,我不敢相信使用它不可能完成代码。

1 个答案:

答案 0 :(得分:0)

Intellij-rust目前具有非常差的宏/生成代码支持。柴油生成的文件处于想法的索引路径中时,其内部使用宏使其无法扩展和获取自动补全,因为运行宏需要执行柴油程序宏,因此会产生实际的过程,从而使其无法自动完成在性能方面。

如果您真的想要这样的东西,那么非常麻烦但几乎无法使用的事情是使用cargo expand扩展柴油生成的模块,然后复制并粘贴结果以代替柴油宏调用。但是,每次执行此操作都是不切实际的,尤其是对于VCS,但这对于学习柴油API可能有用。