finish iterators3
This commit is contained in:
parent
4582eda5cd
commit
e63c871147
|
@ -7,8 +7,6 @@
|
||||||
// Execute `rustlings hint iterators3` to get some hints!
|
// Execute `rustlings hint iterators3` to get some hints!
|
||||||
// Have fun :-)
|
// Have fun :-)
|
||||||
|
|
||||||
// I AM NOT DONE
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum DivisionError {
|
pub enum DivisionError {
|
||||||
NotDivisible(NotDivisibleError),
|
NotDivisible(NotDivisibleError),
|
||||||
|
@ -24,7 +22,18 @@ pub struct NotDivisibleError {
|
||||||
// This function should calculate `a` divided by `b` if `a` is
|
// This function should calculate `a` divided by `b` if `a` is
|
||||||
// evenly divisible by b.
|
// evenly divisible by b.
|
||||||
// Otherwise, it should return a suitable error.
|
// Otherwise, it should return a suitable error.
|
||||||
pub fn divide(a: i32, b: i32) -> Result<i32, DivisionError> {}
|
pub fn divide(a: i32, b: i32) -> Result<i32, DivisionError> {
|
||||||
|
if b == 0 {
|
||||||
|
Err(DivisionError::DivideByZero)
|
||||||
|
} else if (a % b) != 0 {
|
||||||
|
Err(DivisionError::NotDivisible(NotDivisibleError {
|
||||||
|
dividend: a,
|
||||||
|
divisor: b,
|
||||||
|
}))
|
||||||
|
} else {
|
||||||
|
Ok(a / b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
@ -58,12 +67,14 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterator exercises using your `divide` function
|
// Iterator exercises using your `divide` function
|
||||||
/*
|
|
||||||
#[test]
|
#[test]
|
||||||
fn result_with_list() {
|
fn result_with_list() {
|
||||||
let numbers = vec![27, 297, 38502, 81];
|
let numbers = vec![27, 297, 38502, 81];
|
||||||
let division_results = numbers.into_iter().map(|n| divide(n, 27));
|
let division_results = numbers.into_iter().map(|n| divide(n, 27));
|
||||||
let x //... Fill in here!
|
// we need to collect Result object, where:
|
||||||
|
// - Ok -> Vec<i32>
|
||||||
|
// - Err -> DivisionError
|
||||||
|
let x = division_results.collect::<Result<Vec<_>, DivisionError>>();
|
||||||
assert_eq!(format!("{:?}", x), "Ok([1, 11, 1426, 3])");
|
assert_eq!(format!("{:?}", x), "Ok([1, 11, 1426, 3])");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,8 +82,10 @@ mod tests {
|
||||||
fn list_of_results() {
|
fn list_of_results() {
|
||||||
let numbers = vec![27, 297, 38502, 81];
|
let numbers = vec![27, 297, 38502, 81];
|
||||||
let division_results = numbers.into_iter().map(|n| divide(n, 27));
|
let division_results = numbers.into_iter().map(|n| divide(n, 27));
|
||||||
let x //... Fill in here!
|
// we need to collect vector of results, where:
|
||||||
|
// - Ok -> i32
|
||||||
|
// - Err -> DivisionError
|
||||||
|
let x = division_results.collect::<Vec<Result<i32, DivisionError>>>();
|
||||||
assert_eq!(format!("{:?}", x), "[Ok(1), Ok(11), Ok(1426), Ok(3)]");
|
assert_eq!(format!("{:?}", x), "[Ok(1), Ok(11), Ok(1426), Ok(3)]");
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue