@@ -389,6 +389,49 @@ fn write_with_opt_paren<T: fmt::Display>(
389389 Ok ( ( ) )
390390}
391391
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+
392435impl fmt:: Display for Display < ' _ > {
393436 fn fmt ( & self , fmt : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
394437 match * self . 0 {
@@ -408,79 +451,9 @@ impl fmt::Display for Display<'_> {
408451
409452 Cfg :: Any ( ref sub_cfgs) => {
410453 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)
483455 }
456+ Cfg :: All ( ref sub_cfgs) => self . display_sub_cfgs ( fmt, sub_cfgs, " and " ) ,
484457
485458 Cfg :: True => fmt. write_str ( "everywhere" ) ,
486459 Cfg :: False => fmt. write_str ( "nowhere" ) ,
0 commit comments