Go to file
2025-07-14 18:56:29 +03:00
src docs: add readme 2025-07-14 18:49:53 +03:00
.gitignore Initial commit 2025-07-14 18:14:49 +03:00
Cargo.lock chore: rename project 2025-07-14 18:56:29 +03:00
Cargo.toml chore: rename project 2025-07-14 18:56:29 +03:00
README.md chore: rename project 2025-07-14 18:56:29 +03:00

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 merge feature 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:

at your option.