pub fn tokenize_impl(&self) -> TokenStream {
        let mut tokens = TokenStream::new();
        let generics = &self.generics;

        let mut trailing_or_empty = true;
        for param in generics.params.pairs() {
            if let GenericParam::Lifetime(_) = **param.value() {
                param.to_tokens(&mut tokens);
                trailing_or_empty = param.punct().is_some();
            }
        }
        for param in generics.params.pairs() {
            if let GenericParam::Lifetime(_) = **param.value() {
                continue;
            }
            if !trailing_or_empty {
                <Token![,]>::default().to_tokens(&mut tokens);
                trailing_or_empty = true;
            }
            match *param.value() {
                GenericParam::Lifetime(_) => unreachable!(),
                GenericParam::Type(param) => {
                    // Leave off the type parameter defaults
                    tokens.append_all(param.attrs.iter().filter(|attr| match attr.style {
                        AttrStyle::Outer => true,
                        AttrStyle::Inner(_) => false,
                    }));
                    param.ident.to_tokens(&mut tokens);
                    if !param.bounds.is_empty() {
                        if let Some(t) = &param.colon_token {
                            t.to_tokens(&mut tokens)
                        }

                        param.bounds.to_tokens(&mut tokens);
                    }
                }
                GenericParam::Const(param) => {
                    // Leave off the const parameter defaults
                    tokens.append_all(param.attrs.iter().filter(|attr| match attr.style {
                        AttrStyle::Outer => true,
                        AttrStyle::Inner(_) => false,
                    }));
                    param.const_token.to_tokens(&mut tokens);
                    param.ident.to_tokens(&mut tokens);
                    param.colon_token.to_tokens(&mut tokens);
                    param.ty.to_tokens(&mut tokens);
                }
            }
            param.punct().to_tokens(&mut tokens);
        }
        if !tokens.is_empty() {
            <Token![,]>::default().to_tokens(&mut tokens);
        }
        tokens
    }
/// Tokenize parameters for `impl` blocks.
/// It doesn't contain outer brackets, but lifetimes and trait bounds.
Tokenize parameters for `impl` blocks.
It doesn't contain outer brackets, but lifetimes and trait bounds.
Tokenize parameters for ` impl ` blocks . It doesn ' t contain outer brackets but lifetimes and trait bounds .
pub fn tokenize_impl(&self) -> TokenStream {
        let mut tokens = TokenStream::new();
        let generics = &self.generics;
        let mut trailing_or_empty = true;
        for param in generics.params.pairs() {
            if let GenericParam::Lifetime(_) = **param.value() {
                param.to_tokens(&mut tokens);
                trailing_or_empty = param.punct().is_some();
            }
        }
        for param in generics.params.pairs() {
            if let GenericParam::Lifetime(_) = **param.value() {
                continue;
            }
            if !trailing_or_empty {
                <Token![,]>::default().to_tokens(&mut tokens);
                trailing_or_empty = true;
            }
            match *param.value() {
                GenericParam::Lifetime(_) => unreachable!(),
                GenericParam::Type(param) => {
                    // Leave off the type parameter defaults
                    tokens.append_all(param.attrs.iter().filter(|attr| match attr.style {
                        AttrStyle::Outer => true,
                        AttrStyle::Inner(_) => false,
                    }));
                    param.ident.to_tokens(&mut tokens);
                    if !param.bounds.is_empty() {
                        if let Some(t) = &param.colon_token {
                            t.to_tokens(&mut tokens)
                        }
                        param.bounds.to_tokens(&mut tokens);
                    }
                }
                GenericParam::Const(param) => {
                    // Leave off the const parameter defaults
                    tokens.append_all(param.attrs.iter().filter(|attr| match attr.style {
                        AttrStyle::Outer => true,
                        AttrStyle::Inner(_) => false,
                    }));
                    param.const_token.to_tokens(&mut tokens);
                    param.ident.to_tokens(&mut tokens);
                    param.colon_token.to_tokens(&mut tokens);
                    param.ty.to_tokens(&mut tokens);
                }
            }
            param.punct().to_tokens(&mut tokens);
        }
        if !tokens.is_empty() {
            <Token![,]>::default().to_tokens(&mut tokens);
        }
        tokens
    }
pub fn tokenize_impl ( & self ) -> TokenStream { let mut tokens = TokenStream :: new ( ) ; let generics = & self . generics ; let mut trailing_or_empty = true ; for param in generics . params . pairs ( ) { if let GenericParam :: Lifetime ( _ ) = * * param . value ( ) { param . to_tokens ( & mut tokens ) ; trailing_or_empty = param . punct ( ) . is_some ( ) ; } } for param in generics . params . pairs ( ) { if let GenericParam :: Lifetime ( _ ) = * * param . value ( ) { continue ; } if ! trailing_or_empty { < Token ! [ ] > :: default ( ) . to_tokens ( & mut tokens ) ; trailing_or_empty = true ; } match * param . value ( ) { GenericParam :: Lifetime ( _ ) => unreachable ! ( ) , GenericParam :: Type ( param ) => { // Leave off the type parameter defaults tokens . append_all ( param . attrs . iter ( ) . filter ( | attr | match attr . style { AttrStyle :: Outer => true , AttrStyle :: Inner ( _ ) => false , } ) ) ; param . ident . to_tokens ( & mut tokens ) ; if ! param . bounds . is_empty ( ) { if let Some ( t ) = & param . colon_token { t . to_tokens ( & mut tokens ) } param . bounds . to_tokens ( & mut tokens ) ; } } GenericParam :: Const ( param ) => { // Leave off the const parameter defaults tokens . append_all ( param . attrs . iter ( ) . filter ( | attr | match attr . style { AttrStyle :: Outer => true , AttrStyle :: Inner ( _ ) => false , } ) ) ; param . const_token . to_tokens ( & mut tokens ) ; param . ident . to_tokens ( & mut tokens ) ; param . colon_token . to_tokens ( & mut tokens ) ; param . ty . to_tokens ( & mut tokens ) ; } } param . punct ( ) . to_tokens ( & mut tokens ) ; } if ! tokens . is_empty ( ) { < Token ! [ ] > :: default ( ) . to_tokens ( & mut tokens ) ; } tokens }
Tokenize parameters for `impl` blocks.
Tokenize parameters for ` impl ` blocks .
&self
&self