@@ -815,9 +815,16 @@ impl Ord for UseSegment {
815
815
match ( self , other) {
816
816
( & Slf ( ref a) , & Slf ( ref b) )
817
817
| ( & Super ( ref a) , & Super ( ref b) )
818
- | ( & Crate ( ref a) , & Crate ( ref b) ) => a. cmp ( b) ,
818
+ | ( & Crate ( ref a) , & Crate ( ref b) ) => match ( a, b) {
819
+ ( Some ( sa) , Some ( sb) ) => {
820
+ sa. trim_start_matches ( "r#" ) . cmp ( sb. trim_start_matches ( "r#" ) )
821
+ }
822
+ ( _, _) => a. cmp ( b) ,
823
+ } ,
819
824
( & Glob , & Glob ) => Ordering :: Equal ,
820
- ( & Ident ( ref ia, ref aa) , & Ident ( ref ib, ref ab) ) => {
825
+ ( & Ident ( ref pia, ref aa) , & Ident ( ref pib, ref ab) ) => {
826
+ let ia = pia. trim_start_matches ( "r#" ) ;
827
+ let ib = pib. trim_start_matches ( "r#" ) ;
821
828
// snake_case < CamelCase < UPPER_SNAKE_CASE
822
829
if ia. starts_with ( char:: is_uppercase) && ib. starts_with ( char:: is_lowercase) {
823
830
return Ordering :: Greater ;
@@ -835,13 +842,14 @@ impl Ord for UseSegment {
835
842
if ident_ord != Ordering :: Equal {
836
843
return ident_ord;
837
844
}
838
- if aa. is_none ( ) && ab. is_some ( ) {
839
- return Ordering :: Less ;
840
- }
841
- if aa. is_some ( ) && ab. is_none ( ) {
842
- return Ordering :: Greater ;
845
+ match ( aa, ab) {
846
+ ( None , Some ( _) ) => Ordering :: Less ,
847
+ ( Some ( _) , None ) => Ordering :: Greater ,
848
+ ( Some ( aas) , Some ( abs) ) => aas
849
+ . trim_start_matches ( "r#" )
850
+ . cmp ( abs. trim_start_matches ( "r#" ) ) ,
851
+ ( None , None ) => Ordering :: Equal ,
843
852
}
844
- aa. cmp ( ab)
845
853
}
846
854
( & List ( ref a) , & List ( ref b) ) => {
847
855
for ( a, b) in a. iter ( ) . zip ( b. iter ( ) ) {
0 commit comments