#![deny(warnings, missing_docs)]
use async_memcached::{Client, Error};
use async_trait::async_trait;
pub type Pool = deadpool::managed::Pool<Client, Error>;
pub type PoolError = deadpool::managed::PoolError<Error>;
pub type Connection = deadpool::managed::Object<Client, Error>;
type RecycleResult = deadpool::managed::RecycleResult<Error>;
pub struct Manager {
addr: String,
}
impl Manager {
pub fn new(addr: String) -> Self {
Self { addr }
}
}
#[async_trait]
impl deadpool::managed::Manager<Client, Error> for Manager {
async fn create(&self) -> Result<Client, Error> {
Client::new(&self.addr).await
}
async fn recycle(&self, conn: &mut Client) -> RecycleResult {
match conn.version().await {
Ok(_) => Ok(()),
Err(e) => Err(e.into()),
}
}
}