@@ -21,6 +21,7 @@ use crate::lists::{
21
21
} ;
22
22
use crate :: rewrite:: { Rewrite , RewriteContext , RewriteErrorExt , RewriteResult } ;
23
23
use crate :: shape:: Shape ;
24
+ use crate :: sort:: version_sort;
24
25
use crate :: source_map:: SpanUtils ;
25
26
use crate :: spanned:: Spanned ;
26
27
use crate :: utils:: { is_same_visibility, mk_sp, rewrite_ident} ;
@@ -923,7 +924,7 @@ impl Ord for UseSegment {
923
924
| ( Crate ( ref a) , Crate ( ref b) ) => match ( a, b) {
924
925
( Some ( sa) , Some ( sb) ) => {
925
926
if self . style_edition >= StyleEdition :: Edition2024 {
926
- sa. trim_start_matches ( "r#" ) . cmp ( sb. trim_start_matches ( "r#" ) )
927
+ version_sort ( sa. trim_start_matches ( "r#" ) , sb. trim_start_matches ( "r#" ) )
927
928
} else {
928
929
a. cmp ( b)
929
930
}
@@ -937,20 +938,26 @@ impl Ord for UseSegment {
937
938
} else {
938
939
( pia. as_str ( ) , pib. as_str ( ) )
939
940
} ;
940
- // snake_case < CamelCase < UPPER_SNAKE_CASE
941
- if ia. starts_with ( char:: is_uppercase) && ib. starts_with ( char:: is_lowercase) {
942
- return Ordering :: Greater ;
943
- }
944
- if ia. starts_with ( char:: is_lowercase) && ib. starts_with ( char:: is_uppercase) {
945
- return Ordering :: Less ;
946
- }
947
- if is_upper_snake_case ( ia) && !is_upper_snake_case ( ib) {
948
- return Ordering :: Greater ;
949
- }
950
- if !is_upper_snake_case ( ia) && is_upper_snake_case ( ib) {
951
- return Ordering :: Less ;
952
- }
953
- let ident_ord = ia. cmp ( ib) ;
941
+
942
+ let ident_ord = if self . style_edition >= StyleEdition :: Edition2024 {
943
+ version_sort ( ia, ib)
944
+ } else {
945
+ // snake_case < CamelCase < UPPER_SNAKE_CASE
946
+ if ia. starts_with ( char:: is_uppercase) && ib. starts_with ( char:: is_lowercase) {
947
+ return Ordering :: Greater ;
948
+ }
949
+ if ia. starts_with ( char:: is_lowercase) && ib. starts_with ( char:: is_uppercase) {
950
+ return Ordering :: Less ;
951
+ }
952
+ if is_upper_snake_case ( ia) && !is_upper_snake_case ( ib) {
953
+ return Ordering :: Greater ;
954
+ }
955
+ if !is_upper_snake_case ( ia) && is_upper_snake_case ( ib) {
956
+ return Ordering :: Less ;
957
+ }
958
+ ia. cmp ( ib)
959
+ } ;
960
+
954
961
if ident_ord != Ordering :: Equal {
955
962
return ident_ord;
956
963
}
@@ -959,8 +966,7 @@ impl Ord for UseSegment {
959
966
( Some ( _) , None ) => Ordering :: Greater ,
960
967
( Some ( aas) , Some ( abs) ) => {
961
968
if self . style_edition >= StyleEdition :: Edition2024 {
962
- aas. trim_start_matches ( "r#" )
963
- . cmp ( abs. trim_start_matches ( "r#" ) )
969
+ version_sort ( aas. trim_start_matches ( "r#" ) , abs. trim_start_matches ( "r#" ) )
964
970
} else {
965
971
aas. cmp ( abs)
966
972
}
0 commit comments