#![deny(warnings, missing_docs)]
use std::convert::Infallible;
use async_memcached::{Client, Error};
type RecycleResult = deadpool::managed::RecycleResult<Error>;
type ConfigError = Infallible;
pub use deadpool::managed::reexports::*;
deadpool::managed_reexports!(
"memcached",
Manager,
deadpool::managed::Object<Manager>,
Error,
ConfigError
);
pub struct Manager {
addr: String,
}
impl Manager {
pub fn new(addr: impl Into<String>) -> Self {
Self { addr: addr.into() }
}
}
impl deadpool::managed::Manager for Manager {
type Type = Client;
type Error = Error;
async fn create(&self) -> Result<Client, Error> {
Client::new(&self.addr).await
}
async fn recycle(&self, conn: &mut Client, _: &Metrics) -> RecycleResult {
match conn.version().await {
Ok(_) => Ok(()),
Err(e) => Err(e.into()),
}
}
}