【问题标题】:How do I get autocompletion for Diesel's schema module?如何获得 Diesel 架构模块的自动完成功能?
【发布时间】:2019-12-19 13:10:25
【问题描述】:

我想出了如何使 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 的一大特色,我不敢相信用它来完成代码是不可能的。

【问题讨论】:

    标签: rust rust-diesel


    【解决方案1】:

    Intellij-rust 目前对宏/生成代码的支持很差。虽然diesel 生成了一个位于idea 索引路径中的文件,但它在内部使用宏使其无法扩展和自动完成,因为运行宏需要执行diesel 过程宏,它会产生一个实际的进程,使得自动完成变得不切实际在性能方面。

    如果你真的想要这样的东西,一个非常麻烦但勉强可用的方法是使用cargo expand 来扩展柴油生成的模块,然后复制并粘贴结果来代替柴油宏调用。尽管如此,每次都这样做是不切实际的,尤其是使用 VCS,但它可能对学习柴油 API 很有用。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 2012-09-22
      • 2018-05-10
      • 2013-04-20
      • 2015-03-24
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多