5 releases

0.1.2 Oct 31, 2023
0.1.1 Oct 31, 2023
0.1.0 Oct 30, 2023

#460 in Configuration


Used in gotcha

MIT license

22KB
463 lines

yaac

Yet another another configuration lib for web application

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: yaac can resolve the placeholder like ${APP_KEY_NAME}
  • path variable resolver: yaac can resolve the placeholder like ${parent.sub.key_name}

Installation

$ cargo add yaac

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).

Dependencies

~2.8–4MB
~73K SLoC