cgp-macro-lib 0.7.0

Context-generic programming core component macros implemented as a library.
Documentation
use quote::ToTokens;
use syn::Ident;
use syn::parse::{Parse, ParseStream};
use syn::token::Lt;

use crate::parse::ImplGenerics;

pub struct TypeSpec {
    pub name: Ident,
    pub generics: Option<ImplGenerics>,
}

impl Parse for TypeSpec {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        let name: Ident = input.parse()?;
        let generics = if input.peek(Lt) {
            Some(input.parse()?)
        } else {
            None
        };

        Ok(Self { name, generics })
    }
}

impl ToTokens for TypeSpec {
    fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
        self.name.to_tokens(tokens);
        self.generics.to_tokens(tokens);
    }
}