首页 > 解决方案 > 返回 deadpool_postgres::Client 的函数改为返回 Future

问题描述

我无法理解此代码和引发的错误。

use deadpool_postgres::{ Config, pool, Client };
use tokio_postgres::NoTls;

pub struct Postgres {
    pool: Pool
}

impl Postgres {
    pub fn new() -> Postgres {
        let mut cfg = Config::new();
        cfg.dbname = Some("deadpool".to_string());
        cfg.manager = Some(ManagerConfig { recycling_method: RecyclingMethod::Fast });
        let pool = cfg.create_pool(NoTls).unwrap();
        return Postgres {
            pool: pool
        };
    }
    
    pub async fn get_client(&self) -> Client {
        if let Ok(client) = self.pool.get().await {
            return Some(client);
        } else {
            return None;
        }
    }
}

async fn main() {
    let pg = Postgres::new();
    let mut client = pg.get_client();
    let stmt = client.prepare_cached("select 1").await;
}

deadpool_postgres 和 IDE 的文档告诉我,我在 client 变量中获取了一个 Client 对象,但下一行告诉我它是impl std:future::Future一个

no method named `prepare_cached` found for opaque type `impl std::future::Future` in the current scope

我该如何解决这个问题?

标签: rust

解决方案


推荐阅读