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

标签 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 的一个重要功能,我不敢相信它不可能完成代码。

最佳答案

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

如果您真的想要这样的东西,那么使用 cargo expand 会非常麻烦但几乎没有用。展开柴油生成的模块,然后复制并粘贴结果以代替柴油宏调用。尽管如此,每次都这样做是不切实际的,尤其是对于 VCS,但它可能对学习柴油 API 很有用。

关于rust - 如何获得 Diesel 模式模块的自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469925/

相关文章:

rust - "borrow of possibly uninitialized variable""obviously"无法访问 block 中的错误

rust - 无法在 Rust/Actix 应用程序中使用柴油计时功能

rest - 无法在 `Fn` 闭包中将捕获的外部变量借用为可变的

rust - ~/.rustup 和 ~/.cargo 中的二进制文件有什么区别?

rust - 为柴油模型定义结构时出现错误未定义类型或模块

postgresql - Rust:如何将SocketAddr转换为IpNetwork?

rust - 如何使用 Diesel 编写多个显式的 inner_join?

rust - 关系的渴望

rust - 特征实现其父特征的任何替代方法?

rust - Rust 是否支持将中缀运算符用作函数?