Rust sqlx:没有查询终结器

Rust sqlx: there is no query finalizers

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

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

我收到 no method named `fetch_all` found for struct `sqlx_core::query::Query<'_, _>` in the current scope 错误。关注官方getting started readme。 这也适用于 query_as 方法。我怀疑由于某种原因编译器没有“看到”sqlx::Query 特征方法,但我不知道如何将它们引入范围。

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

此外,rust-analyzer LSP 告诉我 data 变量的类型是 std::result::Result<[type error], [type error]>,这给我带来了不便,这消除了使用自动完成和类型检查的任何可能性,其他比 运行(出了名的慢)rust 编译器。

P.S。我使用 PostgreSQL 作为数据库解决方案,如果有帮助的话。

P.S.S. env 变量 DATABASE_URL 在编译时设置并且是正确的,因此宏会完成所有编译时验证工作。

稍微浏览了一下 docs.rs,我发现类型 sqlx::Query 除了 fetch 之外甚至没有终结器。至于sqlx::query_as,我要找的trait叫做PgQueryAs,里面其实有fetch_allfetch_optionalfetch_one等,加上use sqlx::postgress::PgQueryAs 为我解决了这个问题。

尽管如此,我仍然不知道在 IDE.

中评估宏以获得合适类型的解决方案