use salvo::Listener;
use shuttle_runtime::Error;
use std::net::SocketAddr;
pub struct SalvoService(pub salvo::Router);
#[shuttle_runtime::async_trait]
impl shuttle_runtime::Service for SalvoService {
async fn bind(mut self, addr: SocketAddr) -> Result<(), Error> {
let listener = salvo::conn::TcpListener::new(addr).bind().await;
salvo::Server::new(listener).serve(self.0).await;
Ok(())
}
}
impl From<salvo::Router> for SalvoService {
fn from(router: salvo::Router) -> Self {
Self(router)
}
}
pub type ShuttleSalvo = Result<SalvoService, Error>;