@@ -236,20 +236,14 @@ fn merge_where_clause(
236
236
237
237
pub fn impl_ (
238
238
generic_params : Option < ast:: GenericParamList > ,
239
- generic_args : Option < ast:: GenericParamList > ,
239
+ generic_args : Option < ast:: GenericArgList > ,
240
240
path_type : ast:: Type ,
241
241
where_clause : Option < ast:: WhereClause > ,
242
242
body : Option < Vec < either:: Either < ast:: Attr , ast:: AssocItem > > > ,
243
243
) -> 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 ( ) ) ;
253
247
254
248
let where_clause = match where_clause {
255
249
Some ( pr) => pr. to_string ( ) ,
@@ -261,7 +255,7 @@ pub fn impl_(
261
255
None => String :: new ( ) ,
262
256
} ;
263
257
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 }}}" ) )
265
259
}
266
260
267
261
pub fn impl_trait (
@@ -282,10 +276,8 @@ pub fn impl_trait(
282
276
let trait_gen_args = trait_gen_args. map ( |args| args. to_string ( ) ) . unwrap_or_default ( ) ;
283
277
let type_gen_args = type_gen_args. map ( |args| args. to_string ( ) ) . unwrap_or_default ( ) ;
284
278
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 ( ) ) ;
289
281
290
282
let is_negative = if is_negative { "! " } else { "" } ;
291
283
@@ -297,7 +289,7 @@ pub fn impl_trait(
297
289
None => String :: new ( ) ,
298
290
} ;
299
291
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 }}}" ) )
301
293
}
302
294
303
295
pub fn impl_trait_type ( bounds : ast:: TypeBoundList ) -> ast:: ImplTraitType {
0 commit comments