Rust sqlx:没有查询终结器

Lin*_*nk0 6 postgresql rust rust-sqlx

问题是当我输入这样的代码时。

let data = sqlx::query("SELECT id, name FROM test")
        .fetch_all(&pool)
        .await;
Run Code Online (Sandbox Code Playgroud)

我收到一个no method named `fetch_all` found for struct `sqlx_core::query::Query<'_, _>` in the current scope错误。以下为官方入门自述文件。这也适用于该query_as方法。我怀疑由于某种原因编译器没有“看到”sqlx::Query特征方法,但我不知道如何将它们纳入范围。

虽然当我使用宏时sqlx::query!.fetch_all确实存在。

另外,还有一个不便之处,rust-analyzerLSP 告诉我变量的类型datastd::result::Result<[type error], [type error]>,这消除了使用自动完成和类型检查的任何可能性,除了运行(众所周知的慢)rust 编译器。

PS 我使用 PostgreSQL 作为数据库解决方案,如果这可能有帮助的话。

PSS 环境变量 DATABASE_URL 在编译时设置并且是正确的,因此宏会执行所有编译时验证工作。

Lin*_*nk0 1

稍微浏览一下 docs.rs,我发现 typesqlx::Query甚至没有除了fetch. 至于sqlx::query_as,我正在寻找的特征被称为PgQueryAs,它实际上包含fetch_allfetch_optionalfetch_one等。添加use sqlx::postgress::PgQueryAs解决了我的问题。

尽管如此,我仍然不知道评估宏以在 IDE 中获得合适类型的解决方案。