@@ -38,6 +38,7 @@ use core::fmt;
38
38
use core:: iter:: FusedIterator ;
39
39
use core:: mem:: MaybeUninit ;
40
40
use core:: { ptr, slice} ;
41
+ use core:: cmp:: Ordering ;
41
42
42
43
use crate :: storage:: { OwnedStorage , Storage , ViewStorage } ;
43
44
@@ -957,33 +958,35 @@ impl<T: PartialEq, const N: usize> PartialEq for Deque<T, N> {
957
958
}
958
959
let ( sa, sb) = self . as_slices ( ) ;
959
960
let ( oa, ob) = other. as_slices ( ) ;
960
- if sa. len ( ) == oa. len ( ) {
961
- sa == oa && sb == ob
962
- } else if sa. len ( ) < oa. len ( ) {
963
- // Always divisible in three sections, for example:
964
- // self: [a b c|d e f]
965
- // other: [0 1 2 3|4 5]
966
- // front = 3, mid = 1,
967
- // [a b c] == [0 1 2] && [d] == [3] && [e f] == [4 5]
968
- let front = sa. len ( ) ;
969
- let mid = oa. len ( ) - front;
970
-
971
- let ( oa_front, oa_mid) = oa. split_at ( front) ;
972
- let ( sb_mid, sb_back) = sb. split_at ( mid) ;
973
- debug_assert_eq ! ( sa. len( ) , oa_front. len( ) ) ;
974
- debug_assert_eq ! ( sb_mid. len( ) , oa_mid. len( ) ) ;
975
- debug_assert_eq ! ( sb_back. len( ) , ob. len( ) ) ;
976
- sa == oa_front && sb_mid == oa_mid && sb_back == ob
977
- } else {
978
- let front = oa. len ( ) ;
979
- let mid = sa. len ( ) - front;
980
-
981
- let ( sa_front, sa_mid) = sa. split_at ( front) ;
982
- let ( ob_mid, ob_back) = ob. split_at ( mid) ;
983
- debug_assert_eq ! ( sa_front. len( ) , oa. len( ) ) ;
984
- debug_assert_eq ! ( sa_mid. len( ) , ob_mid. len( ) ) ;
985
- debug_assert_eq ! ( sb. len( ) , ob_back. len( ) ) ;
986
- sa_front == oa && sa_mid == ob_mid && sb == ob_back
961
+ match sa. len ( ) . cmp ( & oa. len ( ) ) {
962
+ Ordering :: Equal => { sa == oa && sb == ob }
963
+ Ordering :: Less => {
964
+ // Always divisible in three sections, for example:
965
+ // self: [a b c|d e f]
966
+ // other: [0 1 2 3|4 5]
967
+ // front = 3, mid = 1,
968
+ // [a b c] == [0 1 2] && [d] == [3] && [e f] == [4 5]
969
+ let front = sa. len ( ) ;
970
+ let mid = oa. len ( ) - front;
971
+
972
+ let ( oa_front, oa_mid) = oa. split_at ( front) ;
973
+ let ( sb_mid, sb_back) = sb. split_at ( mid) ;
974
+ debug_assert_eq ! ( sa. len( ) , oa_front. len( ) ) ;
975
+ debug_assert_eq ! ( sb_mid. len( ) , oa_mid. len( ) ) ;
976
+ debug_assert_eq ! ( sb_back. len( ) , ob. len( ) ) ;
977
+ sa == oa_front && sb_mid == oa_mid && sb_back == ob
978
+ }
979
+ Ordering :: Greater => {
980
+ let front = oa. len ( ) ;
981
+ let mid = sa. len ( ) - front;
982
+
983
+ let ( sa_front, sa_mid) = sa. split_at ( front) ;
984
+ let ( ob_mid, ob_back) = ob. split_at ( mid) ;
985
+ debug_assert_eq ! ( sa_front. len( ) , oa. len( ) ) ;
986
+ debug_assert_eq ! ( sa_mid. len( ) , ob_mid. len( ) ) ;
987
+ debug_assert_eq ! ( sb. len( ) , ob_back. len( ) ) ;
988
+ sa_front == oa && sa_mid == ob_mid && sb == ob_back
989
+ }
987
990
}
988
991
}
989
992
}
0 commit comments