Skip to content

Commit 4136889

Browse files
author
Zoran Cvetkov
committed
substitute if with match
1 parent 501c8ba commit 4136889

File tree

1 file changed

+39
-34
lines changed

1 file changed

+39
-34
lines changed

store/postgres/src/relational.rs

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -583,48 +583,53 @@ impl Layout {
583583
// deduced. For immutable entities the entries in upper_vec are missing hence they are considered
584584
// having a lower bound at particular block and upper bound at infinity.
585585
while lower_now.is_some() || upper_now.is_some() {
586-
let (ewt, block) = if lower_now.is_some() {
587-
if upper_now.is_some() {
588-
if lower > upper {
589-
// we have upper bound at this block, but no lower bounds at the same block so it's deletion
590-
let (ewt, block) = transform(upper, EntitySubgraphOperation::Delete)?;
591-
// advance upper_vec pointer
592-
upper_now = upper_iter.next();
593-
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
594-
(ewt, block)
595-
} else if lower < upper {
596-
// we have lower bound at this block but no upper bound at the same block so its creation
597-
let (ewt, block) = transform(lower, EntitySubgraphOperation::Create)?;
598-
// advance lower_vec pointer
599-
lower_now = lower_iter.next();
600-
lower = lower_now.unwrap_or(&EntityDataExt::default()).clone();
601-
(ewt, block)
602-
} else {
603-
assert!(upper == lower);
604-
let (ewt, block) = transform(lower, EntitySubgraphOperation::Modify)?;
605-
// advance both lower_vec and upper_vec pointers
606-
lower_now = lower_iter.next();
607-
lower = lower_now.unwrap_or(&EntityDataExt::default()).clone();
608-
upper_now = upper_iter.next();
609-
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
610-
(ewt, block)
586+
let (ewt, block) = match (lower_now.is_some(), upper_now.is_some()) {
587+
(true, true) => {
588+
match lower.cmp(&upper) {
589+
std::cmp::Ordering::Greater => {
590+
// we have upper bound at this block, but no lower bounds at the same block so it's deletion
591+
let (ewt, block) = transform(upper, EntitySubgraphOperation::Delete)?;
592+
// advance upper_vec pointer
593+
upper_now = upper_iter.next();
594+
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
595+
(ewt, block)
596+
}
597+
std::cmp::Ordering::Less => {
598+
// we have lower bound at this block but no upper bound at the same block so its creation
599+
let (ewt, block) = transform(lower, EntitySubgraphOperation::Create)?;
600+
// advance lower_vec pointer
601+
lower_now = lower_iter.next();
602+
lower = lower_now.unwrap_or(&EntityDataExt::default()).clone();
603+
(ewt, block)
604+
}
605+
std::cmp::Ordering::Equal => {
606+
let (ewt, block) = transform(lower, EntitySubgraphOperation::Modify)?;
607+
// advance both lower_vec and upper_vec pointers
608+
lower_now = lower_iter.next();
609+
lower = lower_now.unwrap_or(&EntityDataExt::default()).clone();
610+
upper_now = upper_iter.next();
611+
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
612+
(ewt, block)
613+
}
611614
}
612-
} else {
615+
}
616+
(true, false) => {
613617
// we have lower bound at this block but no upper bound at the same block so its creation
614618
let (ewt, block) = transform(lower, EntitySubgraphOperation::Create)?;
615619
// advance lower_vec pointer
616620
lower_now = lower_iter.next();
617621
lower = lower_now.unwrap_or(&EntityDataExt::default()).clone();
618622
(ewt, block)
619623
}
620-
} else {
621-
// we have upper bound at this block, but no lower bounds at all so it's deletion
622-
assert!(upper_now.is_some());
623-
let (ewt, block) = transform(upper, EntitySubgraphOperation::Delete)?;
624-
// advance upper_vec pointer
625-
upper_now = upper_iter.next();
626-
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
627-
(ewt, block)
624+
(false, have_upper) => {
625+
// we have upper bound at this block, but no lower bounds at all so it's deletion
626+
assert!(have_upper);
627+
let (ewt, block) = transform(upper, EntitySubgraphOperation::Delete)?;
628+
// advance upper_vec pointer
629+
upper_now = upper_iter.next();
630+
upper = upper_now.unwrap_or(&EntityDataExt::default()).clone();
631+
(ewt, block)
632+
}
628633
};
629634

630635
match entities.get_mut(&block) {

0 commit comments

Comments
 (0)