#![allow(dead_code)]
use confique::Config;
use std::{net::IpAddr, path::PathBuf};
#[derive(Debug, Config)]
struct Conf {
#[config(nested)]
http: Http,
#[config(nested)]
log: LogConfig,
}
#[derive(Debug, Config)]
#[config(layer_attr(derive(Clone)))]
struct Http {
#[config(env = "PORT")]
port: u16,
#[config(default = "127.0.0.1")]
bind: IpAddr,
}
#[derive(Debug, Config)]
struct LogConfig {
#[config(default = true)]
stdout: bool,
file: Option<PathBuf>,
}
fn main() {
let r = Conf::builder()
.env()
.file("examples/files/simple.toml")
.file("examples/files/etc/simple.yaml")
.load();
match r {
Ok(conf) => println!("{:#?}", conf),
Err(e) => println!("{e:#}"),
}
}