From 9ac56c50f16cf884eefb0f3477e657b455ad14f8 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 23 Sep 2018 06:58:26 +0200 Subject: [PATCH] typecons: Add option constructor function --- source/tanya/typecons.d | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/tanya/typecons.d b/source/tanya/typecons.d index db1abfa..52fcbb2 100644 --- a/source/tanya/typecons.d +++ b/source/tanya/typecons.d @@ -178,6 +178,8 @@ template tuple(Names...) * * Params: * T = Type of the encapsulated value. + * + * See_Also: $(D_PSYMBOL option). */ struct Option(T) { @@ -530,3 +532,30 @@ struct Option(T) assert(toHash.toHash() == 1U); } } + +/** + * Creates a new $(D_PSYMBOL Option). + * + * Params: + * T = Option type. + * value = Initial value. + * + * See_Also: $(D_PSYMBOL Option). + */ +Option!T option(T)(auto ref T value) +{ + return Option!T(forward!value); +} + +/// ditto +Option!T option(T)() +{ + return Option!T(); +} + +/// +@nogc nothrow pure @safe unittest +{ + assert(option!int().isNothing); + assert(option(5) == 5); +}