我一直在使用once_cell
做很多只需要做一次的工作,然后以只读全局的方式持久化。这很好,因为我不必传递这些东西。我想知道这样的东西是否允许用于db句柄/池?
static POOL: Pool<Postgres> = PgPoolOptions::new()
.max_connections(5)
.connect("postgres://postgres:password@localhost/test")
.await
.unwrap();
但是可惜的是,由于.await
,这不起作用,
error[E0744]: `.await` is not allowed in a `static`
--> src/main.rs:10:31
如果我尝试用once_cell
Package ,我会得到
static POOL = Lazy::new(|| sqlx_rt::block_on(
PgPoolOptions::new()
.max_connections(5)
.connect("postgres://postgres:password@localhost/test")
.await
) );
这里有什么办法可以做我想做的事吗
1条答案
按热度按时间lyr7nygr1#
时雄OnceCell(2021年4月12日发布的Tokio 1.5.0中增加)
时雄现在提供了一个异步OnceCell,tokio::sync::OnceCell!您可以使用Tokio OnceCell进行异步代码。
使用once_cell crate(2021年初答案)
once_cell
crate并没有currently provide异步API。相反,你可以从main函数初始化static: