Option in Rust represents a value that may or may not be there: It is optional.
Consider the following example where we have some configuration for our program. This configuration lets the user set their favorite color.
Now there are many reasons we might not have a value here yet. Maybe the user hasn't set a favorite color since it's their first time using the program. Maybe they don't even have a favorite color! So instead of using
String as the type of
favorite_color, we use
Option<String>. This lets the user decided whether or not they want the program to know what their favorite color is.
In the first example the user's favorite color was
"pink", and in the second example the user doesn't have one. These differences are represented by