https://betterprogramming.pub/exploring-rusts-option-type-a-guide-to-optional-value-handling-3049cf50a992