apollo-configuration 0.4.0

A typed, friendly configuration system for Apollo products.
Documentation
use apollo_configuration::configuration;
use apollo_configuration::parse_yaml;
use apollo_configuration::types::Duration;

#[configuration]
struct DurationConfig {
    #[config(required)]
    timeout: Duration,
}

#[configuration]
struct BoxedConfig {
    #[config(required)]
    inner: Box<DurationConfig>,
}

#[test]
fn boxed_config_parses() {
    let config: BoxedConfig = parse_yaml(
        r#"
        inner:
          timeout: 10s
        "#,
        &Default::default(),
    )
    .unwrap();

    assert_eq!(*config.inner.timeout, std::time::Duration::from_secs(10));
}