9 releases
| 0.1.21 | May 13, 2025 |
|---|---|
| 0.1.15 | May 13, 2025 |
#947 in Filesystem
271 downloads per month
11KB
249 lines
anydir
A Rust library that provides a unified interface for working with both compile-time embedded directories and runtime directories.
Motivation
It frustrated me that no Rust library had an abstracted Dir type that allowed for both embedded compile-time directories and runtime directories, so I made one.
If you know of such a library, please let me know !
Installation
Add this to your Cargo.toml:
[dependencies]
anydir = "0.1.0"
Usage
use anydir::anydir;
fn main() {
// Embed files at compile time - bundled directly in your binary
let ct_dir = anydir!(ct, "$CARGO_MANIFEST_DIR");
let ct_files = ct_dir.files();
println!("Compile-time files: {:?}", ct_files);
// Access files at runtime from the filesystem
let rt_dir = anydir!(rt, "./");
let rt_files = rt_dir.files();
println!("Runtime files: {:?}", rt_files);
}
Features
- Compile-time embedding: Bundle directory contents directly in your binary
- Runtime access: Load directories from the filesystem at runtime
- Unified API: Work with both types using the same interface
- Zero-cost abstraction: No runtime overhead for compile-time directories
- Simple macros: Easy-to-use macro interface
API
Macros
anydir!(ct, path)- Create a compile-time embedded directoryanydir!(rt, path)- Create a runtime directory reference
Traits
DirOps- Common operations for directoriesfiles()- Returns a vector of filenames in the directory
Dependencies
~125–490KB
~11K SLoC