typetrait 0.1.1

Helper macro to generate types for typestate programming
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
use proc_macro2::TokenStream;
use quote::quote;

use super::parse::Blanket;

pub fn generate(Blanket { visibility, trait_name, bounds }: Blanket) -> TokenStream {
    let bounds: Vec<_> = bounds.iter().map(|bound| quote! { #bound + }).collect();
    quote! {
        #visibility trait #trait_name: #(#bounds)* {}
        impl<BlanketTypeParameter> #trait_name for BlanketTypeParameter where BlanketTypeParameter: #(#bounds)* {}
        
    }
}