9 releases (breaking)

new 0.13.0 Mar 15, 2025
0.12.0 Oct 21, 2024
0.11.1 Dec 4, 2023
0.11.0 Oct 20, 2023
0.10.0 Jul 17, 2023

#57 in #config-toml

Download history 2106/week @ 2024-11-23 1809/week @ 2024-11-30 1763/week @ 2024-12-07 2068/week @ 2024-12-14 298/week @ 2024-12-21 973/week @ 2024-12-28 1883/week @ 2025-01-04 3405/week @ 2025-01-11 3036/week @ 2025-01-18 2557/week @ 2025-01-25 3178/week @ 2025-02-01 4475/week @ 2025-02-08 5653/week @ 2025-02-15 5618/week @ 2025-02-22 5147/week @ 2025-03-01 5108/week @ 2025-03-08

22,557 downloads per month
Used in confik

MIT/Apache

35KB
742 lines

confik

crates.io Documentation MIT or Apache 2.0 licensed
Version dependency status 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.

Dependencies

~0.5–1MB
~23K SLoC