@@ -402,7 +402,7 @@ impl<'a> Arguments<'a> {
402
402
403
403
if self . args . is_empty ( ) {
404
404
pieces_length
405
- } else if self . pieces [ 0 ] == "" && pieces_length < 16 {
405
+ } else if ! self . pieces . is_empty ( ) && self . pieces [ 0 ] . is_empty ( ) && pieces_length < 16 {
406
406
// If the format string starts with an argument,
407
407
// don't preallocate anything, unless length
408
408
// of pieces is significant.
@@ -1163,7 +1163,7 @@ pub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result {
1163
1163
}
1164
1164
// SAFETY: arg and args.args come from the same Arguments,
1165
1165
// which guarantees the indexes are always within bounds.
1166
- unsafe { run ( & mut formatter, arg, & args. args ) } ?;
1166
+ unsafe { run ( & mut formatter, arg, args. args ) } ?;
1167
1167
idx += 1 ;
1168
1168
}
1169
1169
}
@@ -1409,7 +1409,7 @@ impl<'a> Formatter<'a> {
1409
1409
// we know that it can't panic. Use `get` + `unwrap_or` to avoid
1410
1410
// `unsafe` and otherwise don't emit any panic-related code
1411
1411
// here.
1412
- s. get ( ..i) . unwrap_or ( & s)
1412
+ s. get ( ..i) . unwrap_or ( s)
1413
1413
} else {
1414
1414
& s
1415
1415
}
@@ -1421,16 +1421,21 @@ impl<'a> Formatter<'a> {
1421
1421
// If we're under the maximum length, and there's no minimum length
1422
1422
// requirements, then we can just emit the string
1423
1423
None => self . buf . write_str ( s) ,
1424
- // If we're under the maximum width, check if we're over the minimum
1425
- // width, if so it's as easy as just emitting the string.
1426
- Some ( width) if s. chars ( ) . count ( ) >= width => self . buf . write_str ( s) ,
1427
- // If we're under both the maximum and the minimum width, then fill
1428
- // up the minimum width with the specified string + some alignment.
1429
1424
Some ( width) => {
1430
- let align = rt:: v1:: Alignment :: Left ;
1431
- let post_padding = self . padding ( width - s. chars ( ) . count ( ) , align) ?;
1432
- self . buf . write_str ( s) ?;
1433
- post_padding. write ( self . buf )
1425
+ let chars_count = s. chars ( ) . count ( ) ;
1426
+ // If we're under the maximum width, check if we're over the minimum
1427
+ // width, if so it's as easy as just emitting the string.
1428
+ if chars_count >= width {
1429
+ self . buf . write_str ( s)
1430
+ }
1431
+ // If we're under both the maximum and the minimum width, then fill
1432
+ // up the minimum width with the specified string + some alignment.
1433
+ else {
1434
+ let align = rt:: v1:: Alignment :: Left ;
1435
+ let post_padding = self . padding ( width - chars_count, align) ?;
1436
+ self . buf . write_str ( s) ?;
1437
+ post_padding. write ( self . buf )
1438
+ }
1434
1439
}
1435
1440
}
1436
1441
}
0 commit comments