feat(options): completed options

This commit is contained in:
2026-08-04 21:57:34 +02:00
parent 8b15f8d511
commit ad542a4892
3 changed files with 25 additions and 5 deletions
+9 -1
View File
@@ -4,6 +4,14 @@
// `hour_of_day` is higher than 23.
fn maybe_ice_cream(hour_of_day: u16) -> Option<u16> {
// TODO: Complete the function body.
if hour_of_day < 22 {
Some(5)
} else if hour_of_day <= 23 {
Some(0)
} else {
None
}
}
fn main() {
@@ -18,7 +26,7 @@ mod tests {
fn raw_value() {
// TODO: Fix this test. How do you get the value contained in the
// Option?
let ice_creams = maybe_ice_cream(12);
let ice_creams = maybe_ice_cream(12).unwrap();
assert_eq!(ice_creams, 5); // Don't change this line.
}
+13 -3
View File
@@ -10,8 +10,12 @@ mod tests {
let optional_target = Some(target);
// TODO: Make this an if-let statement whose value is `Some`.
word = optional_target {
assert_eq!(word, target);
//
// word = optional_target {
// assert_eq!(word, target);
// }
if let Some(word) = optional_target {
assert_eq!(word, target)
}
}
@@ -29,7 +33,13 @@ mod tests {
// TODO: Make this a while-let statement. Remember that `Vec::pop()`
// adds another layer of `Option`. You can do nested pattern matching
// in if-let and while-let statements.
integer = optional_integers.pop() {
//
// integer = optional_integers.pop() {
// assert_eq!(integer, cursor);
// cursor -= 1;
// }
while let Some(Some(integer)) = optional_integers.pop() {
assert_eq!(integer, cursor);
cursor -= 1;
}
+3 -1
View File
@@ -9,7 +9,9 @@ fn main() {
// TODO: Fix the compiler error by adding something to this match statement.
match optional_point {
Some(p) => println!("Coordinates are {},{}", p.x, p.y),
Some(ref p) => {
println!("Coordinates are {},{}", p.x, p.y)
}
_ => panic!("No match!"),
}