@@ -273,11 +273,11 @@ impl<'a, 'b> Context<'a, 'b> {
273
273
} else {
274
274
MultiSpan :: from_span ( self . fmtsp )
275
275
} ;
276
- let mut refs: Vec < _ > = self
276
+ let refs_len = self . invalid_refs . len ( ) ;
277
+ let mut refs = self
277
278
. invalid_refs
278
279
. iter ( )
279
- . map ( |( r, pos) | ( r. to_string ( ) , self . arg_spans . get ( * pos) ) )
280
- . collect ( ) ;
280
+ . map ( |( r, pos) | ( r. to_string ( ) , self . arg_spans . get ( * pos) ) ) ;
281
281
282
282
if self . names . is_empty ( ) && !numbered_position_args {
283
283
e = self . ecx . mut_span_err (
@@ -290,28 +290,24 @@ impl<'a, 'b> Context<'a, 'b> {
290
290
) ,
291
291
) ;
292
292
} else {
293
- let ( arg_list, mut sp) = match refs. len ( ) {
294
- 1 => {
295
- let ( reg, pos) = refs. pop ( ) . unwrap ( ) ;
296
- (
297
- format ! ( "argument {}" , reg) ,
298
- MultiSpan :: from_span ( * pos. unwrap_or ( & self . fmtsp ) ) ,
299
- )
300
- }
301
- _ => {
302
- let pos =
303
- MultiSpan :: from_spans ( refs. iter ( ) . map ( |( _, p) | * p. unwrap ( ) ) . collect ( ) ) ;
304
- let mut refs: Vec < String > = refs. iter ( ) . map ( |( s, _) | s. to_owned ( ) ) . collect ( ) ;
305
- let reg = refs. pop ( ) . unwrap ( ) ;
306
- (
307
- format ! (
308
- "arguments {head} and {tail}" ,
309
- tail = reg,
310
- head = refs. join( ", " )
311
- ) ,
312
- pos,
313
- )
314
- }
293
+ let ( arg_list, mut sp) = if refs_len == 1 {
294
+ let ( reg, pos) = refs. next ( ) . unwrap ( ) ;
295
+ (
296
+ format ! ( "argument {}" , reg) ,
297
+ MultiSpan :: from_span ( * pos. unwrap_or ( & self . fmtsp ) ) ,
298
+ )
299
+ } else {
300
+ let ( mut refs, spans) : ( Vec < _ > , Vec < _ > ) = refs. unzip ( ) ;
301
+ let pos = MultiSpan :: from_spans ( spans. into_iter ( ) . map ( |s| * s. unwrap ( ) ) . collect ( ) ) ;
302
+ let reg = refs. pop ( ) . unwrap ( ) ;
303
+ (
304
+ format ! (
305
+ "arguments {head} and {tail}" ,
306
+ head = refs. join( ", " ) ,
307
+ tail = reg,
308
+ ) ,
309
+ pos,
310
+ )
315
311
} ;
316
312
if !self . is_literal {
317
313
sp = MultiSpan :: from_span ( self . fmtsp ) ;
0 commit comments