Skip to content

Commit 5f9fd46

Browse files
committed
Changed the PartialEq impl of Deque, replacing the if comparison chain with match + cmp, as requested by clippy.
1 parent 1fed903 commit 5f9fd46

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

src/deque.rs

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
//! ```
3535
3636
use core::borrow::{Borrow, BorrowMut};
37+
use core::cmp::Ordering;
3738
use core::fmt;
3839
use core::iter::FusedIterator;
3940
use core::mem::MaybeUninit;
@@ -957,33 +958,35 @@ impl<T: PartialEq, const N: usize> PartialEq for Deque<T, N> {
957958
}
958959
let (sa, sb) = self.as_slices();
959960
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+
}
987990
}
988991
}
989992
}

0 commit comments

Comments
 (0)