mirror of
https://github.com/kristoferssolo/filecaster.git
synced 2025-10-21 19:00:34 +00:00
| .github/workflows | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
derive(FromFile)
Procedural macro to derive configuration from files, with optional merging capabilities.
Features
- Derive Configuration: Easily load configuration from files into your Rust structs.
- Default Values: Specify default values for struct fields using the
#[default = "..."]attribute. - Optional Merging: When the
mergefeature is enabled, allows merging multiple configuration sources.
Usage
[dependencies]
filecaster = "0.1"
Example:
use filecaster::FromFile;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Deserialize, Serialize, FromFile)]
pub struct MyConfig {
pub host: String,
#[default = "8080"]
pub port: u16,
#[default = "false"]
pub enabled: bool,
}
fn main() {
// Simulate loading from a file (e.g., JSON, YAML)
let file_content = r#"
{
"host": "localhost"
}
"#;
let config_from_file: MyConfig = serde_json::from_str(file_content).unwrap();
let config = MyConfig::from_file(Some(config_from_file));
println!("Config: {:?}", config);
// Expected output: Config { host: "localhost", port: 8080, enabled: false }
}
Documentation
Full documentation is available at docs.rs.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.