revolt_optional_struct 0.2.0

Crate defining a macro that will generate, from a structure, another structure with only Option<T> fields
Documentation
#[macro_use]
extern crate optional_struct;

#[derive(OptionalStruct)]
#[optional_name = "Woof"]
struct Config {
    delay: Option<u32>,
    path: String,
    percentage: f32,
}

#[test]
fn test_apply_options() {
    let mut config = Config {
        delay: Some(2),
        path: "/var/log/foo.log".to_owned(),
        percentage: 3.12,
    };

    let opt_config = Woof {
        delay: None,
        path: Some("/tmp/bar.log".to_owned()),
        percentage: Some(42.24),
    };

    config.apply_options(opt_config);

    assert_eq!(config.delay, None);
    assert_eq!(config.path, "/tmp/bar.log");
    assert_eq!(config.percentage, 42.24);
}