mapstruct-derive-lib 0.4.0

A derive macro for mapstruct
Documentation
use syn::parse::Parse;

pub enum GenericChange {
    Add(syn::GenericParam),
    Remove(syn::Ident),
}

impl Parse for GenericChange {
    fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
        if input.peek(syn::Token![+]) {
            input.parse::<syn::Token![+]>()?;
            let generic_param = input.parse()?;
            return Ok(GenericChange::Add(generic_param));
        }
        if input.peek(syn::Token![-]) {
            input.parse::<syn::Token![-]>()?;
            let lifetime = input.parse()?;
            return Ok(GenericChange::Remove(lifetime));
        }

        Err(input.error("expected one of +, -"))
    }
}