xxxxxxxxxx
/+dub.sdl:
dependency "optional" version="~>0.7.1"
+/
import std.stdio;
import optional;
void main()
{
// Create empty optional
auto a = no!int;
assert(a == none);
++a; // safe;
a - 1; // safe;
// Assign and try doing the same stuff
a = 9;
assert(a == some(9));
++a; // some(10);
a - 1; // some(9);
// Acts like a range as well
import std.algorithm : map;
import std.conv : to;
cast(void)some(10).map!(to!double); // [10.0]
cast(void)no!int.map!(to!double); // empty
auto r = some(1).match!((int a) => "yes", () => "no",);
assert(r == "yes");
}