Expand description

serfig is a layered configuration system built upon serde.

Builder will load configurations via different collectors.

Examples

use serde::{Deserialize, Serialize};
use serfig::collectors::{from_env, from_file, from_self};
use serfig::parsers::Toml;
use serfig::Builder;

#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
#[serde(default)]
struct TestConfig {
    a: String,
    b: String,
    c: i64,
}

fn main() -> anyhow::Result<()> {
    let builder = Builder::default()
        .collect(from_env())
        .collect(from_file(Toml, "config.toml"))
        .collect(from_self(TestConfig::default()));
    let t: TestConfig = builder.build()?;

    println!("{:?}", t);
    Ok(())
}

Modules

Collectors will provide abstractions for different collectors.

Parsers will provide abstractions for parsing structural data like toml and json.

Structs

Builder will collect values from different collectors and merge into the final value.

Traits

Collector will collect a value which take V as template.

Parse input bytes into specified type T.