Completed exercise up to Traits

This commit is contained in:
Samuele Iacoponi
2026-02-01 16:38:57 +01:00
parent 9ef3441dba
commit b1b81f7e07
33 changed files with 732 additions and 71 deletions

View File

@@ -3,7 +3,22 @@
// someone eats it all, so no ice cream is left (value 0). Return `None` if
// `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 > 23 {
None
} else if hour_of_day < 22 {
Some(5)
} else {
Some(0)
}
// OR
// fn maybe_ice_cream(hour_of_day: u16) -> Option<u16> {
// match hour_of_day {
// 0..=21 => Some(5),
// 22 | 23 => Some(0),
// _ => None,
// }
// }
}
fn main() {
@@ -20,7 +35,7 @@ mod tests {
// Option?
let ice_creams = maybe_ice_cream(12);
assert_eq!(ice_creams, 5); // Don't change this line.
assert_eq!(ice_creams, Some(5)); // Don't change this line.
}
#[test]

View File

@@ -10,7 +10,10 @@ mod tests {
let optional_target = Some(target);
// TODO: Make this an if-let statement whose value is `Some`.
word = optional_target {
// word = optional_target {
// assert_eq!(word, target);
// }
if let Some(word) = optional_target {
assert_eq!(word, target);
}
}
@@ -29,10 +32,16 @@ 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() {
assert_eq!(integer, cursor);
cursor -= 1;
while let Some(integer) = optional_integers.pop() {
if let Some(integer_value) = integer {
println!("integer_value (left): {}, cursor (right): {}", integer_value, cursor);
assert_eq!(integer_value, cursor);
cursor -= 1;
} else {
println!("None value, cursor: {}", cursor);
}
}
assert_eq!(cursor, 0);
}

View File

@@ -9,7 +9,7 @@ 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!"),
}