NAME
    Option::Option

SYNOPSIS
    Provides objects that can hold results that can be unwrapped similar to
    Rust

        use Option::Option;

        my $option = Option::Option->new("something");

        # This croaks:
        print $var;

        # This works
        my $var = $option->unwrap();
        print $var;

        # This also works and has a helpful error message
        my $var = $option->expect("get my something");
        print $var;

AUTHOR
    Lee Katz

METHODS
    new()
        Creates a new object with a variable

    unwrap()
        Checks if the variable is defined and if it is, returns it. If not
        defined, croaks.

    expect($msg)
        Checks if the variable is defined and if it is, returns it. If not
        defined, croaks with error message.

    toString()
        Dies with an error message, describing that the object was attempted
        to be used in a scalar context without unwrapping. This subroutine
        is not meant to be used directly.

            my $var = Option::Option->new("something");
            my $concat = $var . " wicked this way comes";
            # dies with error message during the concatenation

