Crate serfig

source ·
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_self(TestConfig::default()));
    let t: TestConfig = builder.build()?;

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

Re-exports

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.