section_parser_derive 0.1.1

This just exists because I cannot define derive macros inside my binary :(
Documentation
use section_parser_derive::SectionParser;

#[derive(Debug, Eq, PartialEq)]
struct UnderlyingType<T> {
    t: T,
    abc: usize,
}

#[derive(SectionParser)]
struct Test {
    a: Option<UnderlyingType<String>>,
    b: Option<UnderlyingType<Option<String>>>,
}

#[derive(Debug, Eq, PartialEq)]
#[allow(clippy::enum_variant_names)]
enum TestError {
    MissingField(String),
    DuplicateField(String),
    UnexpectedField(String),
}

impl Test {
    fn missing_field_error(&self, field: &str) -> TestError {
        TestError::MissingField(field.to_string())
    }

    fn duplicate_field_error<T>(&self, field: &str, _value: UnderlyingType<T>) -> TestError {
        TestError::DuplicateField(field.to_string())
    }

    fn unexpected_field_error<T>(&self, field: &str, _value: UnderlyingType<T>) -> TestError {
        TestError::UnexpectedField(field.to_string())
    }
}

#[test]
fn ok() {
    let mut test = Test {
        a: Some(UnderlyingType {
            t: "acb".to_string(),
            abc: 2,
        }),
        b: None,
    };

    test.a().unwrap();
    test.set_b(UnderlyingType { t: None, abc: 3 }).unwrap();
    assert_eq!(test.b(), Ok(UnderlyingType { t: None, abc: 3 }));
    test.ensure_empty().unwrap();
}