@@ -236,20 +236,14 @@ fn merge_where_clause(
236236
237237pub fn impl_ (
238238 generic_params : Option < ast:: GenericParamList > ,
239- generic_args : Option < ast:: GenericParamList > ,
239+ generic_args : Option < ast:: GenericArgList > ,
240240 path_type : ast:: Type ,
241241 where_clause : Option < ast:: WhereClause > ,
242242 body : Option < Vec < either:: Either < ast:: Attr , ast:: AssocItem > > > ,
243243) -> ast:: Impl {
244- let ( gen_params, tr_gen_args) = match ( generic_params, generic_args) {
245- ( None , None ) => ( String :: new ( ) , String :: new ( ) ) ,
246- ( None , Some ( args) ) => ( String :: new ( ) , args. to_generic_args ( ) . to_string ( ) ) ,
247- ( Some ( params) , None ) => ( params. to_string ( ) , params. to_generic_args ( ) . to_string ( ) ) ,
248- ( Some ( params) , Some ( args) ) => match merge_gen_params ( Some ( params. clone ( ) ) , Some ( args) ) {
249- Some ( merged) => ( params. to_string ( ) , merged. to_generic_args ( ) . to_string ( ) ) ,
250- None => ( params. to_string ( ) , String :: new ( ) ) ,
251- } ,
252- } ;
244+ let gen_args = generic_args. map_or_else ( String :: new, |it| it. to_string ( ) ) ;
245+
246+ let gen_params = generic_params. map_or_else ( String :: new, |it| it. to_string ( ) ) ;
253247
254248 let where_clause = match where_clause {
255249 Some ( pr) => pr. to_string ( ) ,
@@ -261,7 +255,7 @@ pub fn impl_(
261255 None => String :: new ( ) ,
262256 } ;
263257
264- ast_from_text ( & format ! ( "impl{gen_params} {path_type}{tr_gen_args }{where_clause}{{{}}}" , body ) )
258+ ast_from_text ( & format ! ( "impl{gen_params} {path_type}{gen_args }{where_clause}{{{body }}}" ) )
265259}
266260
267261pub fn impl_trait (
@@ -282,10 +276,8 @@ pub fn impl_trait(
282276 let trait_gen_args = trait_gen_args. map ( |args| args. to_string ( ) ) . unwrap_or_default ( ) ;
283277 let type_gen_args = type_gen_args. map ( |args| args. to_string ( ) ) . unwrap_or_default ( ) ;
284278
285- let gen_params = match merge_gen_params ( trait_gen_params, type_gen_params) {
286- Some ( pars) => pars. to_string ( ) ,
287- None => String :: new ( ) ,
288- } ;
279+ let gen_params = merge_gen_params ( trait_gen_params, type_gen_params)
280+ . map_or_else ( String :: new, |it| it. to_string ( ) ) ;
289281
290282 let is_negative = if is_negative { "! " } else { "" } ;
291283
@@ -297,7 +289,7 @@ pub fn impl_trait(
297289 None => String :: new ( ) ,
298290 } ;
299291
300- ast_from_text ( & format ! ( "{is_unsafe}impl{gen_params} {is_negative}{path_type}{trait_gen_args} for {ty}{type_gen_args}{where_clause}{{{}}}" , body ) )
292+ ast_from_text ( & format ! ( "{is_unsafe}impl{gen_params} {is_negative}{path_type}{trait_gen_args} for {ty}{type_gen_args}{where_clause}{{{body }}}" ) )
301293}
302294
303295pub fn impl_trait_type ( bounds : ast:: TypeBoundList ) -> ast:: ImplTraitType {
0 commit comments