Skip to content

Commit 76508e3

Browse files
authored
rewrite if chains with match in exercise examples (#1014)
1 parent f784313 commit 76508e3

File tree

3 files changed

+16
-18
lines changed

3 files changed

+16
-18
lines changed

exercises/decimal/example.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ impl Decimal {
7575
&lower_precision.digits * pow(BigInt::from(10_usize), precision_difference);
7676
lower_precision.decimal_index += precision_difference;
7777
}
78-
if one.decimal_index < two.decimal_index {
79-
expand(&mut one, &two)
80-
} else if one.decimal_index > two.decimal_index {
81-
expand(&mut two, &one)
78+
match one.decimal_index.cmp(&two.decimal_index) {
79+
std::cmp::Ordering::Equal => {},
80+
std::cmp::Ordering::Less => expand(&mut one, &two),
81+
std::cmp::Ordering::Greater => expand(&mut two, &one),
8282
}
8383
assert_eq!(one.decimal_index, two.decimal_index);
8484
}

exercises/palindrome-products/example.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ pub fn palindrome_products(min: u64, max: u64) -> Option<(Palindrome, Palindrome
4242
result = match result {
4343
None => Some((Palindrome::new(a, b), Palindrome::new(a, b))),
4444
Some((mut minp, mut maxp)) => {
45-
if a * b < minp.value() {
46-
minp = Palindrome::new(a, b);
47-
} else if a * b == minp.value() {
48-
minp.insert(a, b);
45+
match (a * b).cmp(&minp.value()) {
46+
std::cmp::Ordering::Greater => {},
47+
std::cmp::Ordering::Less => minp = Palindrome::new(a, b),
48+
std::cmp::Ordering::Equal => minp.insert(a, b),
4949
}
50-
if a * b > maxp.value() {
51-
maxp = Palindrome::new(a, b);
52-
} else if a * b == maxp.value() {
53-
maxp.insert(a, b);
50+
match (a * b).cmp(&maxp.value()) {
51+
std::cmp::Ordering::Less => {},
52+
std::cmp::Ordering::Greater => maxp = Palindrome::new(a, b),
53+
std::cmp::Ordering::Equal => maxp.insert(a, b),
5454
}
5555
Some((minp, maxp))
5656
}

exercises/perfect-numbers/example.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ pub fn classify(num: u64) -> Option<Classification> {
33
return None;
44
}
55
let sum: u64 = (1..num).filter(|i| num % i == 0).sum();
6-
if sum == num {
7-
Some(Classification::Perfect)
8-
} else if sum < num {
9-
Some(Classification::Deficient)
10-
} else {
11-
Some(Classification::Abundant)
6+
match sum.cmp(&num) {
7+
std::cmp::Ordering::Equal => Some(Classification::Perfect),
8+
std::cmp::Ordering::Less => Some(Classification::Deficient),
9+
std::cmp::Ordering::Greater => Some(Classification::Abundant),
1210
}
1311
}
1412

0 commit comments

Comments
 (0)