@@ -389,6 +389,49 @@ fn write_with_opt_paren<T: fmt::Display>(
389
389
Ok ( ( ) )
390
390
}
391
391
392
+ impl Display < ' _ > {
393
+ fn display_sub_cfgs (
394
+ & self ,
395
+ fmt : & mut fmt:: Formatter < ' _ > ,
396
+ sub_cfgs : & [ Cfg ] ,
397
+ separator : & str ,
398
+ ) -> fmt:: Result {
399
+ let short_longhand = self . 1 . is_long ( ) && {
400
+ let all_crate_features =
401
+ sub_cfgs. iter ( ) . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: feature, Some ( _) ) ) ) ;
402
+ let all_target_features = sub_cfgs
403
+ . iter ( )
404
+ . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: target_feature, Some ( _) ) ) ) ;
405
+
406
+ if all_crate_features {
407
+ fmt. write_str ( "crate features " ) ?;
408
+ true
409
+ } else if all_target_features {
410
+ fmt. write_str ( "target features " ) ?;
411
+ true
412
+ } else {
413
+ false
414
+ }
415
+ } ;
416
+
417
+ for ( i, sub_cfg) in sub_cfgs. iter ( ) . enumerate ( ) {
418
+ if i != 0 {
419
+ fmt. write_str ( separator) ?;
420
+ }
421
+ if let ( true , Cfg :: Cfg ( _, Some ( feat) ) ) = ( short_longhand, sub_cfg) {
422
+ if self . 1 . is_html ( ) {
423
+ write ! ( fmt, "<code>{feat}</code>" ) ?;
424
+ } else {
425
+ write ! ( fmt, "`{feat}`" ) ?;
426
+ }
427
+ } else {
428
+ write_with_opt_paren ( fmt, !sub_cfg. is_all ( ) , Display ( sub_cfg, self . 1 ) ) ?;
429
+ }
430
+ }
431
+ Ok ( ( ) )
432
+ }
433
+ }
434
+
392
435
impl fmt:: Display for Display < ' _ > {
393
436
fn fmt ( & self , fmt : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
394
437
match * self . 0 {
@@ -408,79 +451,9 @@ impl fmt::Display for Display<'_> {
408
451
409
452
Cfg :: Any ( ref sub_cfgs) => {
410
453
let separator = if sub_cfgs. iter ( ) . all ( Cfg :: is_simple) { " or " } else { ", or " } ;
411
-
412
- let short_longhand = self . 1 . is_long ( ) && {
413
- let all_crate_features = sub_cfgs
414
- . iter ( )
415
- . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: feature, Some ( _) ) ) ) ;
416
- let all_target_features = sub_cfgs
417
- . iter ( )
418
- . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: target_feature, Some ( _) ) ) ) ;
419
-
420
- if all_crate_features {
421
- fmt. write_str ( "crate features " ) ?;
422
- true
423
- } else if all_target_features {
424
- fmt. write_str ( "target features " ) ?;
425
- true
426
- } else {
427
- false
428
- }
429
- } ;
430
-
431
- for ( i, sub_cfg) in sub_cfgs. iter ( ) . enumerate ( ) {
432
- if i != 0 {
433
- fmt. write_str ( separator) ?;
434
- }
435
- if let ( true , Cfg :: Cfg ( _, Some ( feat) ) ) = ( short_longhand, sub_cfg) {
436
- if self . 1 . is_html ( ) {
437
- write ! ( fmt, "<code>{feat}</code>" ) ?;
438
- } else {
439
- write ! ( fmt, "`{feat}`" ) ?;
440
- }
441
- } else {
442
- write_with_opt_paren ( fmt, !sub_cfg. is_all ( ) , Display ( sub_cfg, self . 1 ) ) ?;
443
- }
444
- }
445
- Ok ( ( ) )
446
- }
447
-
448
- Cfg :: All ( ref sub_cfgs) => {
449
- let short_longhand = self . 1 . is_long ( ) && {
450
- let all_crate_features = sub_cfgs
451
- . iter ( )
452
- . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: feature, Some ( _) ) ) ) ;
453
- let all_target_features = sub_cfgs
454
- . iter ( )
455
- . all ( |sub_cfg| matches ! ( sub_cfg, Cfg :: Cfg ( sym:: target_feature, Some ( _) ) ) ) ;
456
-
457
- if all_crate_features {
458
- fmt. write_str ( "crate features " ) ?;
459
- true
460
- } else if all_target_features {
461
- fmt. write_str ( "target features " ) ?;
462
- true
463
- } else {
464
- false
465
- }
466
- } ;
467
-
468
- for ( i, sub_cfg) in sub_cfgs. iter ( ) . enumerate ( ) {
469
- if i != 0 {
470
- fmt. write_str ( " and " ) ?;
471
- }
472
- if let ( true , Cfg :: Cfg ( _, Some ( feat) ) ) = ( short_longhand, sub_cfg) {
473
- if self . 1 . is_html ( ) {
474
- write ! ( fmt, "<code>{feat}</code>" ) ?;
475
- } else {
476
- write ! ( fmt, "`{feat}`" ) ?;
477
- }
478
- } else {
479
- write_with_opt_paren ( fmt, !sub_cfg. is_simple ( ) , Display ( sub_cfg, self . 1 ) ) ?;
480
- }
481
- }
482
- Ok ( ( ) )
454
+ self . display_sub_cfgs ( fmt, sub_cfgs, separator)
483
455
}
456
+ Cfg :: All ( ref sub_cfgs) => self . display_sub_cfgs ( fmt, sub_cfgs, " and " ) ,
484
457
485
458
Cfg :: True => fmt. write_str ( "everywhere" ) ,
486
459
Cfg :: False => fmt. write_str ( "nowhere" ) ,
0 commit comments