xxxxxxxxxx
/+dub.sdl:
dependency "optional" version="~>0.12.0"
dependency "vibe-d" version="~>0.8.4"
+/
import std.stdio;
import optional: Optional, some;
import vibe.data.json: Json;
template match1(handlers...) {
auto ref match1(T)(inout auto ref Optional!T opt) {
if (opt.empty) {
return handlers[1]();
} else {
return handlers[0](opt.front);
}
}
}
template match2(handlers...) {
auto match2(T)(auto ref Optional!T opt) {
return match1!handlers(opt);
}
}
void main() {
some(1)
.match2!(
(int i) {return Json(1);},
() {return Json(1);}
)
.writeln;
}