apollo-configuration 0.4.0

A typed, friendly configuration system for Apollo products.
Documentation
use std::sync::Arc;

use apollo_configuration::configuration;
use apollo_configuration::parse_yaml;
use apollo_configuration::types::Duration;

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

#[configuration]
struct ArcConfig {
    #[config(required)]
    shared: Arc<DurationConfig>,
}

#[test]
fn arc_config_parses() {
    let config: ArcConfig = parse_yaml(
        r#"
        shared:
          timeout: 20s
        "#,
        &Default::default(),
    )
    .unwrap();

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