我使用 axum + deadpool-postgres 连接到数据库。在所有示例中,我看到(例如在 deadpool-repo 中)人们使用 axum 的
.with_state()
和 Pool
。我创建了返回 Pool 的异步函数,因此它甚至无法编译。我发现只有一个解决方案 - 使用扩展来实现此目的。
有什么建议吗?
提前致谢。
UPD:有错误的代码示例
mismatched types expected unit type '()' found struct 'deadpool::managed::Pool<Manager>'
//main.rs
let (router, api) = OpenApiRouter::with_openapi(ApiDoc::openapi())
.nest("/test", test_routes())
.with_state(database_pool().await) //here is the error
.split_for_parts();
...
//test.rs
pub fn test_routes() -> OpenApiRouter<()> {
OpenApiRouter::new()
.routes(routes!(test_post_1, test_post_2))
}
如果将
()
中 OpenApiRouter
的泛型转换为 test_routes()
,则 Pool<Manager>
会期望 with_state(...)
而不是 Pool<Manager>
。()
// main.rs
let (router, api) = OpenApiRouter::with_openapi(ApiDoc::openapi())
.nest("/test", test_routes())
.with_state(database_pool().await)
.split_for_parts();