confik

Crates.ioconfik
lib.rsconfik
version0.12.0
sourcesrc
created_at2023-07-12 12:46:08.134555
updated_at2024-10-21 13:02:11.798638
descriptionA library for reading application configuration split across multiple sources
homepage
repositoryhttps://github.com/x52dev/confik
max_upload_size
id914477
size152,392
Rob Ede (robjtede)

documentation

README

confik

crates.io Documentation dependency status MIT or Apache 2.0 licensed
CI codecov Version Download

This crate provides a macro for creating configuration/settings structures and functions to read them from files and the environment.

Example

Assume that config.toml contains

host = "google.com"
username = "root"

and the environment contains

PASSWORD=hunter2

Then:

use confik::{Configuration, EnvSource, FileSource};

#[derive(Debug, PartialEq, Configuration)]
struct Config {
    host: String,
    username: String,

    #[confik(secret)]
    password: String,
}

fn main() {
    let config = Config::builder()
        .override_with(FileSource::new("config.toml"))
        .override_with(EnvSource::new().allow_secrets())
        .try_build()
        .unwrap();

    assert_eq!(
        config,
        Config {
            host: "google.com".to_string(),
            username: "root".to_string(),
            password: "hunter2".to_string(),
        }
    );
}

License

This project is licensed under either of

  • Apache License, Version 2.0
  • MIT License

at your option.

Commit count: 213

cargo fmt