diff options
Diffstat (limited to 'rust/rustlings/exercises/12_options/options1.rs')
| -rw-r--r-- | rust/rustlings/exercises/12_options/options1.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/rust/rustlings/exercises/12_options/options1.rs b/rust/rustlings/exercises/12_options/options1.rs new file mode 100644 index 0000000..be97952 --- /dev/null +++ b/rust/rustlings/exercises/12_options/options1.rs @@ -0,0 +1,42 @@ +// This function returns how much ice cream there is left in the fridge. +// If it's before 22:00 (24-hour system), then 5 scoops are left. At 22:00, +// 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> { + if hour_of_day >= 24 { + return None; + } + if hour_of_day >= 22 { + return Some(0); + } + Some(5) +} + +fn main() { + // You can optionally experiment here. +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn raw_value() { + // TODO: Fix this test. How do you get the value contained in the + // Option? + let ice_creams = maybe_ice_cream(12).unwrap(); + + assert_eq!(ice_creams, 5); // Don't change this line. + } + + #[test] + fn check_ice_cream() { + assert_eq!(maybe_ice_cream(0), Some(5)); + assert_eq!(maybe_ice_cream(9), Some(5)); + assert_eq!(maybe_ice_cream(18), Some(5)); + assert_eq!(maybe_ice_cream(22), Some(0)); + assert_eq!(maybe_ice_cream(23), Some(0)); + assert_eq!(maybe_ice_cream(24), None); + assert_eq!(maybe_ice_cream(25), None); + } +} |