1use anyhow::Result;
2use axum::Router;
3use serde::Deserialize;
4use std::net::SocketAddr;
5
6#[derive(Debug, Deserialize)]
7pub struct GeneralConfig {
8 pub listen: String,
9}
10
11pub async fn serve(config: &GeneralConfig, router: Router) -> Result<()> {
12 let listener = tokio::net::TcpListener::bind(&config.listen).await?;
13 tracing::debug!("listening on {}", listener.local_addr()?);
14 axum::serve(
15 listener,
16 router.into_make_service_with_connect_info::<SocketAddr>(),
17 )
18 .await?;
19 Ok(())
20}