summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'exercises')
-rw-r--r--exercises/18_iterators/iterators3.rs55
1 files changed, 16 insertions, 39 deletions
diff --git a/exercises/18_iterators/iterators3.rs b/exercises/18_iterators/iterators3.rs
index dfe4014..b5d05f6 100644
--- a/exercises/18_iterators/iterators3.rs
+++ b/exercises/18_iterators/iterators3.rs
@@ -1,40 +1,26 @@
-// This is a bigger exercise than most of the others! You can do it! Here is
-// your mission, should you choose to accept it:
-// 1. Complete the divide function to get the first four tests to pass.
-// 2. Get the remaining tests to pass by completing the result_with_list and
-// list_of_results functions.
-
#[derive(Debug, PartialEq, Eq)]
enum DivisionError {
- NotDivisible(NotDivisibleError),
DivideByZero,
+ NotDivisible,
}
-#[derive(Debug, PartialEq, Eq)]
-struct NotDivisibleError {
- dividend: i32,
- divisor: i32,
-}
-
-// Calculate `a` divided by `b` if `a` is evenly divisible by `b`.
+// TODO: Calculate `a` divided by `b` if `a` is evenly divisible by `b`.
// Otherwise, return a suitable error.
fn divide(a: i32, b: i32) -> Result<i32, DivisionError> {
todo!();
}
-// Complete the function and return a value of the correct type so the test
-// passes.
-// Desired output: Ok([1, 11, 1426, 3])
-fn result_with_list() -> () {
- let numbers = vec![27, 297, 38502, 81];
+// TODO: Add the correct return type and complete the function body.
+// Desired output: `Ok([1, 11, 1426, 3])`
+fn result_with_list() {
+ let numbers = [27, 297, 38502, 81];
let division_results = numbers.into_iter().map(|n| divide(n, 27));
}
-// Complete the function and return a value of the correct type so the test
-// passes.
-// Desired output: [Ok(1), Ok(11), Ok(1426), Ok(3)]
-fn list_of_results() -> () {
- let numbers = vec![27, 297, 38502, 81];
+// TODO: Add the correct return type and complete the function body.
+// Desired output: `[Ok(1), Ok(11), Ok(1426), Ok(3)]`
+fn list_of_results() {
+ let numbers = [27, 297, 38502, 81];
let division_results = numbers.into_iter().map(|n| divide(n, 27));
}
@@ -52,19 +38,13 @@ mod tests {
}
#[test]
- fn test_not_divisible() {
- assert_eq!(
- divide(81, 6),
- Err(DivisionError::NotDivisible(NotDivisibleError {
- dividend: 81,
- divisor: 6
- }))
- );
+ fn test_divide_by_0() {
+ assert_eq!(divide(81, 0), Err(DivisionError::DivideByZero));
}
#[test]
- fn test_divide_by_0() {
- assert_eq!(divide(81, 0), Err(DivisionError::DivideByZero));
+ fn test_not_divisible() {
+ assert_eq!(divide(81, 6), Err(DivisionError::NotDivisible));
}
#[test]
@@ -74,14 +54,11 @@ mod tests {
#[test]
fn test_result_with_list() {
- assert_eq!(format!("{:?}", result_with_list()), "Ok([1, 11, 1426, 3])");
+ assert_eq!(result_with_list().unwarp(), [1, 11, 1426, 3]);
}
#[test]
fn test_list_of_results() {
- assert_eq!(
- format!("{:?}", list_of_results()),
- "[Ok(1), Ok(11), Ok(1426), Ok(3)]"
- );
+ assert_eq!(list_of_results(), [Ok(1), Ok(11), Ok(1426), Ok(3)]);
}
}