Trait Expand

Source
pub trait Expand<I> {
    type Output: ToTokens;

    // Required method
    fn expand(&self, input: &I, c: &mut Collector) -> Option<Self::Output>;
}
Expand description

Expand is used for expanding macros

§Example

use macro_compose::{Collector, Expand};
use syn::{parse_quote, DeriveInput, Error, ItemImpl};

struct ImplFooExpand;

impl Expand<DeriveInput> for ImplFooExpand {
    type Output = ItemImpl;
     
    fn expand(&self, input: &DeriveInput, c: &mut Collector) -> Option<Self::Output> {
        let ident = &input.ident;
         
        Some(parse_quote!(
            impl Foo for #ident {
                fn bar(&self) {}
            }   
        ))
    }
}

Required Associated Types§

Source

type Output: ToTokens

the output generated by the expansion

Required Methods§

Source

fn expand(&self, input: &I, c: &mut Collector) -> Option<Self::Output>

expand the macro

Implementors§