Options
Last updated
Last updated
Type Option
represents an optional value: every Option is either Some
and contains a value, or None
.
The if let
syntax lets you combine if
and let
into a less verbose way to handle values that match one pattern while ignoring the rest.
Using if let
means less typing, less indentation, and less boilerplate code.
Similarly while let
syntax lets you combine while
and let
.
References:
In this exercise we need to return ice cream left by given hour.
Hour 0
until 21
return 5
scoop left.
Hour 22
until 23
return 0
scoop left.
Hour 24
or more return None
.
So based on the condition above we can use match
syntax like this:
And to get the value we can use unwrap
method.
unwrap
can cause panic if the values is None
so best not to use, we can use unwrap_or
instead to provide default value if None
.
In this exercise we need to fix simple_option
function by using if let
syntax to safely unwrap/unpack the Option
value.
The code above will unwrap the optional_target
.
If there is Some
value it will bind it to variable word
and we can use it inside the block.
If None
then it will ignore it.
Second task is to fix simple_option
by using while let
syntax.
The code above will do same thing with if let
, it will check the returned value of optional_integers.pop()
.
If there is Some
value there it will bind it to integer
variable and then goes inside the block.
If None
the loop will stop.
In this exercise because we want to use the variables optional_point
further after match we should not move the ownership.
Instead we should match the reference so it can be borrowed by adding &
.