9 releases
new 0.1.21 | May 13, 2025 |
---|---|
0.1.15 | May 13, 2025 |
#448 in Filesystem
244 downloads per month
9KB
177 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
~250–700KB
~17K SLoC