std.sumtype

SumType is a generic discriminated union implementation that uses design-by-introspection to generate safe and efficient code. Its features include:

* [Pattern matching.]match * Support for self-referential types. * Full attribute correctness (pure, @safe, @nogc, and nothrow are inferred whenever possible). * A type-safe and memory-safe API compatible with DIP 1000 (scope). * No dependency on runtime type information (TypeInfo). * Compatibility with BetterC.

List of examples

* Basic usage * Matching with an overload set * Recursive SumTypes * Memory corruption (why assignment can be @system) * Avoiding unintentional matches * Multiple dispatch

Public Imports

std.internal.test.sumtype_example_overloads
public import std.internal.test.sumtype_example_overloads;
Undocumented in source.

Members

Classes

MatchException
class MatchException

Thrown by tryMatch when an unhandled type is encountered.

Structs

SumType
struct SumType(Types...)

A tagged union that can hold a single value from any of a specified set of types.

This
struct This

Placeholder used to refer to the enclosing SumType.

Templates

canMatch
template canMatch(alias handler, Ts...)

True if handler is a potential match for Ts, otherwise false.

match
template match(handlers...)

Calls a type-appropriate function with the value held in a SumType.

tryMatch
template tryMatch(handlers...)

Attempts to call a type-appropriate function with the value held in a SumType, and throws on failure.

Variables

isSumType
enum bool isSumType(T);

True if T is a SumType or implicitly converts to one, otherwise false.

Meta

License

Boost License 1.0

Authors

Paul Backus