Simple way to use [`include_bytes!`](https://doc.rust-lang.org/std/macro.include_bytes.html) for directories. # Why I wanted to include a directory for my microcontroller project, but none of the solutions I used before seems to work in a no_std environment. # Example You can embed files three ways. ## Bytes mode ```rust use dir_embed::Embed; #[derive(Embed)] #[dir = "../web/static"] // Path is relativ to the current file #[mode = "bytes"] // Is the default. Can be omitted. pub struct Assets; fn main(){ let file: &[u8] = Assets::get("css/style.css").expect("Can't find file"); let string = str::from_utf8(file).expect("Failed to parse file"); println!("{string}"); } ``` ## Str mode ```rust use dir_embed::Embed; #[derive(Embed)] #[dir = "../web/static"] // Path is relativ to the current file #[mode = "str"] pub struct Assets; fn main(){ let file: &str = Assets::get("css/style.css").expect("Can't find file"); println!("{file}"); } ``` ## Mime mode Same as "Bytes mode" but also add the guessed mime type from [`mime_guess`](https://crates.io/crates/mime_guess). Defaults to `application/octet-stream` for unknown types. ```rust use dir_embed::Embed; #[derive(Embed)] #[dir = "../web/static"] // Path is relativ to the current file #[mode = "mime"] pub struct Assets; fn main(){ let file: (&[u8],&str) = Assets::get("css/style.css").expect("Can't find file"); let string = str::from_utf8(file.0).expect("Failed to parse file"); println!("{string}"); println!("MIME: {file.1}"); // text/css } ```