Rust Custom Derive Macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.
You can use this to embed your css, js and images into a single executable which can be deployed to your servers. Also it makes it easy to build a very small docker image for you to deploy.
[dependencies]
rust-embed="3.0.0"
Declare a struct name it Asset or something and add an attribute folder
to it which has the path to your static folder.
#[derive(RustEmbed)]
#[folder = "examples/public/"]
struct Asset;
#[macro_use]
extern crate rust_embed;
#[derive(RustEmbed)]
#[folder = "examples/public/"]
struct Asset;
fn main() {
let index_html = Asset::get("index.html").unwrap();
println!("{:?}", std::str::from_utf8(&index_html));
}
To run the example in dev mode where it reads from the fs,
cargo run --example basic
To run the example in release mode where it reads from binary,
cargo run --example basic --release
Note: To run the actix-web
example:
cargo run --example actix --features actix
Note: To run the rocket
example, add the nightly
feature flag and run on a nightly build:
cargo +nightly run --example rocket --features nightly
debug: cargo test --test lib
release: cargo test --test lib --release
Go Rusketeers! The power is yours!