serve_embed 0.1.0

serve embedded file with axum
Documentation
extern crate serve_embed;

#[derive(rust_embed::RustEmbed)]
#[folder = "test-fixtures/www1"]
struct TestFixtures;

#[tokio::main]
async fn main() {
    const SOCKET_ADDR: &str = "127.0.0.1:8080";
    let addr: std::net::SocketAddr = SOCKET_ADDR.parse().unwrap();
    let service = serve_embed::ServeEmbed::<TestFixtures>::default().append_index_html_on_directories(true);
    let app = axum::Router::new().fallback_service(service);
    let (tx, mut rx) = tokio::sync::mpsc::channel::<()>(1);
    ctrlc::set_handler(move || {
        let _ = tx.blocking_send(());
    })
    .unwrap();
    println!("serving at http://{}", SOCKET_ADDR);
    println!("press ctrl+c to stop server");
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .with_graceful_shutdown(async move {
            let _ = rx.recv().await;
        })
        .await
        .unwrap();
}