Michael-F-Bryan/include_dir
The logical evolution of the include_str macro for embedding a directory tree into your binary.
{ "createdAt": "2017-06-07T01:47:20Z", "defaultBranch": "master", "description": "The logical evolution of the include_str macro for embedding a directory tree into your binary.", "fullName": "Michael-F-Bryan/include_dir", "homepage": "https://michael-f-bryan.github.io/include_dir", "language": "Rust", "name": "include_dir", "pushedAt": "2024-07-05T12:01:32Z", "stargazersCount": 377, "topics": [], "updatedAt": "2025-11-24T09:35:33Z", "url": "https://github.com/Michael-F-Bryan/include_dir"}include_dir
Section titled “include_dir”An evolution of the include_str!() and include_bytes!() macros for embedding
an entire directory tree into your binary.
Rendered Documentation:
Getting Started
Section titled “Getting Started”The include_dir!() macro works very similarly to the normal include_str!()
and include_bytes!() macros. You pass the macro a file path and assign the
returned value to some static variable.
use include_dir::{include_dir, Dir};
static PROJECT_DIR: Dir = include_dir!("$CARGO_MANIFEST_DIR");
// of course, you can retrieve a file by its full pathlet lib_rs = PROJECT_DIR.get_file("src/lib.rs").unwrap();
// you can also inspect the file's contentslet body = lib_rs.contents_utf8().unwrap();assert!(body.contains("SOME_INTERESTING_STRING"));
// you can search for files (and directories) using glob patterns#[cfg(feature = "glob")]{ let glob = "**/*.rs"; for entry in PROJECT_DIR.find(glob).unwrap() { println!("Found {}", entry.path().display()); }}Features
Section titled “Features”- Embed a directory tree into your binary at compile time
- Find a file in the embedded directory
- Search for files using a glob pattern (requires the
globsfeature) - File metadata (requires the
metadatafeature)
To-Do list:
- Compression?