@@ -943,72 +943,69 @@ fn print_dep_table_msg(shell: &mut Shell, dep: &DependencyUI) -> CargoResult<()>
943
943
if matches ! ( shell. verbosity( ) , crate :: core:: shell:: Verbosity :: Quiet ) {
944
944
return Ok ( ( ) ) ;
945
945
}
946
+
946
947
let ( activated, deactivated) = dep. features ( ) ;
947
948
if !activated. is_empty ( ) || !deactivated. is_empty ( ) {
948
949
let prefix = format ! ( "{:>13}" , " " ) ;
949
- let suffix = if let Some ( version) = & dep. available_version {
950
- let mut version = version. clone ( ) ;
951
- version. build = Default :: default ( ) ;
952
- let version = version. to_string ( ) ;
953
- // Avoid displaying the version if it will visually look like the version req that we
954
- // showed earlier
955
- let version_req = dep
956
- . version ( )
957
- . and_then ( |v| semver:: VersionReq :: parse ( v) . ok ( ) )
958
- . and_then ( |v| precise_version ( & v) ) ;
959
- if version_req. as_deref ( ) != Some ( version. as_str ( ) ) {
960
- format ! ( " as of v{version}" )
961
- } else {
962
- "" . to_owned ( )
963
- }
964
- } else {
965
- "" . to_owned ( )
966
- } ;
950
+ let suffix = format_features_version_suffix ( & dep) ;
967
951
968
- shell. write_stderr ( format_args ! ( "{}Features{}:\n " , prefix , suffix ) , & style:: NOP ) ?;
952
+ shell. write_stderr ( format_args ! ( "{prefix }Features{suffix }:\n " ) , & style:: NOP ) ?;
969
953
970
- const MAX_FEATURE_PRINTS : usize = 50 ;
971
-
972
- let mut activated_printed = 0 ;
954
+ const MAX_FEATURE_PRINTS : usize = 30 ;
973
955
let total_activated = activated. len ( ) ;
974
- for feat in activated {
975
- if activated_printed >= MAX_FEATURE_PRINTS {
976
- let remaining = total_activated - activated_printed;
977
- shell. write_stderr (
978
- format_args ! ( "{prefix}... {remaining} more activated features\n " ) ,
979
- & style:: NOP ,
980
- ) ?;
981
- break ;
982
- }
956
+ let total_deactivated = deactivated. len ( ) ;
983
957
984
- shell. write_stderr ( & prefix, & style:: NOP ) ?;
985
- shell. write_stderr ( '+' , & style:: GOOD ) ?;
986
- shell. write_stderr ( format_args ! ( " {}\n " , feat) , & style:: NOP ) ?;
987
- activated_printed += 1 ;
958
+ if total_activated <= MAX_FEATURE_PRINTS {
959
+ for feat in activated {
960
+ shell. write_stderr ( & prefix, & style:: NOP ) ?;
961
+ shell. write_stderr ( '+' , & style:: GOOD ) ?;
962
+ shell. write_stderr ( format_args ! ( " {feat}\n " ) , & style:: NOP ) ?;
963
+ }
964
+ } else {
965
+ shell. write_stderr (
966
+ format_args ! ( "{prefix}{total_activated} activated features\n " ) ,
967
+ & style:: NOP ,
968
+ ) ?;
988
969
}
989
970
990
- let mut deactivated_printed = 0 ;
991
- let total_deactivated = deactivated. len ( ) ;
992
- for feat in deactivated {
993
- if activated_printed + deactivated_printed >= MAX_FEATURE_PRINTS {
994
- let remaining = total_deactivated - deactivated_printed;
995
- shell. write_stderr (
996
- format_args ! ( "{prefix}... {remaining} more deactivated features\n " ) ,
997
- & style:: NOP ,
998
- ) ?;
999
- break ;
971
+ if total_activated + total_deactivated <= MAX_FEATURE_PRINTS {
972
+ for feat in deactivated {
973
+ shell. write_stderr ( & prefix, & style:: NOP ) ?;
974
+ shell. write_stderr ( '-' , & style:: ERROR ) ?;
975
+ shell. write_stderr ( format_args ! ( " {feat}\n " ) , & style:: NOP ) ?;
1000
976
}
1001
-
1002
- shell. write_stderr ( & prefix , & style :: NOP ) ? ;
1003
- shell . write_stderr ( '-' , & style :: ERROR ) ? ;
1004
- shell . write_stderr ( format_args ! ( " {} \n " , feat ) , & style:: NOP ) ? ;
1005
- deactivated_printed += 1 ;
977
+ } else {
978
+ shell. write_stderr (
979
+ format_args ! ( "{prefix}{total_deactivated} deactivated features \n " ) ,
980
+ & style:: NOP ,
981
+ ) ? ;
1006
982
}
1007
983
}
1008
984
1009
985
Ok ( ( ) )
1010
986
}
1011
987
988
+ fn format_features_version_suffix ( dep : & DependencyUI ) -> String {
989
+ if let Some ( version) = & dep. available_version {
990
+ let mut version = version. clone ( ) ;
991
+ version. build = Default :: default ( ) ;
992
+ let version = version. to_string ( ) ;
993
+ // Avoid displaying the version if it will visually look like the version req that we
994
+ // showed earlier
995
+ let version_req = dep
996
+ . version ( )
997
+ . and_then ( |v| semver:: VersionReq :: parse ( v) . ok ( ) )
998
+ . and_then ( |v| precise_version ( & v) ) ;
999
+ if version_req. as_deref ( ) != Some ( version. as_str ( ) ) {
1000
+ format ! ( " as of v{version}" )
1001
+ } else {
1002
+ "" . to_owned ( )
1003
+ }
1004
+ } else {
1005
+ "" . to_owned ( )
1006
+ }
1007
+ }
1008
+
1012
1009
// Based on Iterator::is_sorted from nightly std; remove in favor of that when stabilized.
1013
1010
fn is_sorted ( mut it : impl Iterator < Item = impl PartialOrd > ) -> bool {
1014
1011
let Some ( mut last) = it. next ( ) else {
0 commit comments