我已经设置了 Rust Rocket Web 框架,并且能够使用官方的 Elasticsearch Rust crate 来设置客户端并从 elasticsearch 索引中获取文档。但是,在查看此示例https://github.com/davidpdrsn/graphql-app-example时,我注意到此处连接到 Postgres 的 GraphQL 使用 Rocket 提供的 .attach() 方法。我尝试通过在 elasticsearch 客户端上实现 Fairing 特征来对我的 elasticsearch 客户端做同样的事情,但这是不可能的。我收到以下错误:error[E0117]:只有当前 crate 中定义的特征可以为任意类型实现。这是有道理的,所以我尝试包装类型,然后在其上实现 Fairing 特征并得到一个单独的错误:(dyn elasticsearch::http::transport::ConnectionPool + 'static)
不能在线程之间安全地发送。这也是有道理的,因为 RUST 的官方 elasticsearch 客户端是异步的。
所以我的问题是:elasticsearch、graphql 和 Rust Rocket 可以一起工作吗?如果他们可以一起工作,有什么好的工作例子吗?我做了很多谷歌搜索,并在 github 上搜索了一些 repos,但无法找到解决方案。