#axum #static-file #macro #serve-static

yanked axum_static_macro

A macro to serve static files from the binary in Axum, and a list of content types for them

1.2.1 Oct 4, 2022
1.2.0 May 29, 2022
1.1.3 Apr 14, 2022
1.1.2 Apr 13, 2022
1.0.8 Apr 3, 2022

#42 in #serve-static


Used in simpleshortener

MIT/Apache

6KB

Axum Static Macro

! ! ! THIS REPOSITORY IS NO LONGER MAINTAINED! ! ! !

Instead, you can use

router.route("/", get(|| async { ([("Content-Type", "text/html")], include_bytes!("index.html")) }))
axum = "0.4" # Required
axum_static_macro = "1"

This package has a single macro (static_file) which takes arguments for name, file path, and content type and fills out the proper statics.
In debug mode, it will read the file live so you can change it without recompiling the program. (Works only in crate root.)
It takes three arguments. Function name (this is what you wrap in the axum get handler), file path, and content type.
Does not panic in release mode. Debug mode can panic if the file does not exist.
Includes a module (content_types) with consts for common content types.

#[tokio::main]
async fn main() {
    // create our static file handler
    axum_static_macro::static_file!(index, "index.html", axum_static_macro::content_types::HTML);
    // build our application with a single route
    let app = axum::Router::new().route("/", axum::routing::get(index));
    // run it with hyper on localhost:3000
    axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
        .serve(app.into_make_service())
        .await
        .unwrap();
}

No runtime deps