public struct Tag(string tag_, T = void)

Wraps T with tag_.

Example

import std.variant : Algebraic, visit;
alias Option(T) = Algebraic!(
  Tag!("Some", T),
  Tag!"None"
);
Option!int option;

option = tag!"Some"(1);
assert(option.visit!(
  (Tag!("Some", int) a) => Option!int(tag!"Some"(a + 1)),
  (Tag!"None" a) => Option!int(a)
) == tag!"Some"(2));

option = tag!"None"();
assert(option.visit!(
  (Tag!("Some", int) a) => Option!int(tag!"Some"(a + 1)),
  (Tag!"None" a) => Option!int(a)
) == tag!"None"());

public string tag

tag

public T value

internal value

Variables

tag
string
value
T