serde-textual 0.1.1

derive Display/FromStr by using serde
Documentation
use proc_macro2::TokenStream;
use quote::quote;
use syn::parse::{Parse, ParseStream};

pub struct AssertTextualInput {
    value: syn::Expr,
    #[allow(dead_code)]
    comma: syn::Token![,],
    textual: syn::Expr,
}

impl Parse for AssertTextualInput {
    fn parse(input: ParseStream) -> syn::parse::Result<Self> {
        Ok(Self {
            value: input.parse()?,
            comma: input.parse()?,
            textual: input.parse()?,
        })
    }
}

pub fn generate(input: AssertTextualInput) -> TokenStream {
    let AssertTextualInput { value, textual, .. } = input;
    quote! {
        {
            assert_eq!(#value, #textual.parse().unwrap());
            assert_eq!(#value.to_string(), #textual);
        }
    }
}