mofa

Crates.iomofa
lib.rsmofa
version0.1.2
created_at2024-12-27 16:09:54.103468+00
updated_at2025-01-29 15:11:41.890478+00
descriptionthe config lib that merges options from anywhere
homepagehttps://github.com/Kilerd/mofa
repository
max_upload_size
id1496476
size37,345
Kilerd Chan (Kilerd)

documentation

README

mofa

the config lib that Merges options from anywhere

GitHub Workflow Status (with branch) Crates.io Crates.io (recent) docs.rs Crates.io

Features

  • hierarchy file supported: file source allow users to load config from multiple files
  • environment variable resolver: mofa can resolve the placeholder like ${APP_KEY_NAME}
  • path variable resolver: mofa can resolve the placeholder like ${parent.sub.key_name}

Installation

$ cargo add mofa

Example

#[derive(Debug, Deserialize)]
struct Config {
    original: String,
    value: String,
}
fn main() {
    let mut loader = ConfigLoader::new();
    loader.add_source(FileSource::new("configuration/application.toml"));
    loader.add_source(FileSource::new("configuration/application_database.toml"));
    loader.add_source(EnvironmentSource::new("APP"));
    loader.enable_environment_variable_processor();
    loader.enable_path_variable_processor();

    let config: Config = loader.construct()?;
}

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

License

This project is licensed under MIT license (LICENSE-MIT or [http://opensource.org/licenses/MIT]).

Commit count: 0

cargo fmt