var.tryAs

Nullable!T tryAs(T)() const @safe

Attempt to convert the stored value to type T, returning a Nullable!T.

Unlike as!T, which returns T.init on failure (making it impossible to distinguish between "the value was T.init" and "conversion failed"), tryAs!T returns a Nullable!T that is null when conversion fails.

Conversion rules:

  • If the current type is Type.NULL, returns a null Nullable!T.
  • If the stored type matches T or can be converted via std.conv.to, returns the value.
  • If conversion fails (e.g., type mismatch or std.conv throws), returns a null Nullable!T.

Parameters

TThe target type to convert to.

Returns

A Nullable!T containing the converted value, or null if conversion failed.

Examples

var v = 42;
auto result = v.tryAs!int;
assert(!result.isNull && result.get == 42);

var s = "not a number";
auto bad = s.tryAs!int;
assert(bad.isNull); // conversion failed

var zero = 0;
auto zeroResult = zero.tryAs!int;
assert(!zeroResult.isNull && zeroResult.get == 0); // distinguishable from failure