mirror of
https://github.com/notohh/rustlings.git
synced 2024-11-25 14:57:32 -05:00
options1 solution
This commit is contained in:
parent
1694682aa4
commit
c31e15c4cf
3 changed files with 53 additions and 18 deletions
|
@ -1,12 +1,9 @@
|
||||||
// This function returns how much icecream there is left in the fridge.
|
// This function returns how much icecream there is left in the fridge.
|
||||||
// If it's before 10PM, there's 5 scoops left. At 10PM, someone eats it
|
// If it's before 22:00 (24-hour system), then 5 scoops are left. At 22:00,
|
||||||
// all, so there'll be no more left :(
|
// someone eats it all, so no icecream is left (value 0). Return `None` if
|
||||||
fn maybe_icecream(time_of_day: u16) -> Option<u16> {
|
// `hour_of_day` is higher than 23.
|
||||||
// We use the 24-hour system here, so 10PM is a value of 22 and 12AM is a
|
fn maybe_icecream(hour_of_day: u16) -> Option<u16> {
|
||||||
// value of 0. The Option output should gracefully handle cases where
|
// TODO: Complete the function body.
|
||||||
// time_of_day > 23.
|
|
||||||
// TODO: Complete the function body - remember to return an Option!
|
|
||||||
???
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -17,6 +14,14 @@ fn main() {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn raw_value() {
|
||||||
|
// TODO: Fix this test. How do you get the value contained in the
|
||||||
|
// Option?
|
||||||
|
let icecreams = maybe_icecream(12);
|
||||||
|
assert_eq!(icecreams, 5);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_icecream() {
|
fn check_icecream() {
|
||||||
assert_eq!(maybe_icecream(0), Some(5));
|
assert_eq!(maybe_icecream(0), Some(5));
|
||||||
|
@ -24,14 +29,7 @@ mod tests {
|
||||||
assert_eq!(maybe_icecream(18), Some(5));
|
assert_eq!(maybe_icecream(18), Some(5));
|
||||||
assert_eq!(maybe_icecream(22), Some(0));
|
assert_eq!(maybe_icecream(22), Some(0));
|
||||||
assert_eq!(maybe_icecream(23), Some(0));
|
assert_eq!(maybe_icecream(23), Some(0));
|
||||||
|
assert_eq!(maybe_icecream(24), None);
|
||||||
assert_eq!(maybe_icecream(25), None);
|
assert_eq!(maybe_icecream(25), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn raw_value() {
|
|
||||||
// TODO: Fix this test. How do you get at the value contained in the
|
|
||||||
// Option?
|
|
||||||
let icecreams = maybe_icecream(12);
|
|
||||||
assert_eq!(icecreams, 5);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -603,7 +603,7 @@ hint = """
|
||||||
Options can have a `Some` value, with an inner value, or a `None` value,
|
Options can have a `Some` value, with an inner value, or a `None` value,
|
||||||
without an inner value.
|
without an inner value.
|
||||||
|
|
||||||
There's multiple ways to get at the inner value, you can use `unwrap`, or
|
There are multiple ways to get at the inner value, you can use `unwrap`, or
|
||||||
pattern match. Unwrapping is the easiest, but how do you do it safely so that
|
pattern match. Unwrapping is the easiest, but how do you do it safely so that
|
||||||
it doesn't panic in your face later?"""
|
it doesn't panic in your face later?"""
|
||||||
|
|
||||||
|
|
|
@ -1 +1,38 @@
|
||||||
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
|
// This function returns how much icecream 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 icecream is left (value 0). Return `None` if
|
||||||
|
// `hour_of_day` is higher than 23.
|
||||||
|
fn maybe_icecream(hour_of_day: u16) -> Option<u16> {
|
||||||
|
match hour_of_day {
|
||||||
|
0..22 => Some(5),
|
||||||
|
22..24 => Some(0),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// You can optionally experiment here.
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn raw_value() {
|
||||||
|
// Using `unwrap` is fine in a test.
|
||||||
|
let icecreams = maybe_icecream(12).unwrap();
|
||||||
|
assert_eq!(icecreams, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn check_icecream() {
|
||||||
|
assert_eq!(maybe_icecream(0), Some(5));
|
||||||
|
assert_eq!(maybe_icecream(9), Some(5));
|
||||||
|
assert_eq!(maybe_icecream(18), Some(5));
|
||||||
|
assert_eq!(maybe_icecream(22), Some(0));
|
||||||
|
assert_eq!(maybe_icecream(23), Some(0));
|
||||||
|
assert_eq!(maybe_icecream(24), None);
|
||||||
|
assert_eq!(maybe_icecream(25), None);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue