sumtype 0.5.0
vit
vit at vit.vit
Wed Aug 8 21:57:07 UTC 2018
On Wednesday, 8 August 2018 at 20:54:13 UTC, Paul Backus wrote:
> SumType is a generic sum type for modern D. It is meant as an
> alternative to `std.variant.Algebraic`.
>
> Features:
> - Pattern matching, including support for structural matching
> (*)
> - Self-referential types, using `This`
> - Works with `pure`, `@safe`, `@nogc`, and `immutable` (*)
> - Zero runtime overhead compared to hand-written C
> - No heap allocation
> - Does not rely on runtime type information (`TypeInfo`) (*)
>
> Starred features (*) are those that are missing from
> `Algebraic`.
>
> Code examples are available in the documentation (linked below).
>
> New since the last announced version, 0.3.0:
> - Types with destructors and postblits are now handled
> correctly.
> - Unreachable handlers in `match` calls are now a
> compile-time error.
> - `match` handlers can now operate on the stored value by
> reference.
> - A new method, `tryMatch`, allows for non-exhaustive pattern
> matching.
> - Various small improvements to the documentation.
>
> Documentation: https://pbackus.github.io/sumtype/sumtype.html
> DUB: https://code.dlang.org/packages/sumtype
> Github: https://github.com/pbackus/sumtype
Nice,
but destructor SumType.~this() can call destroy on reference type
like class:
bool destructed = false;
class C{
~this(){
destructed = true;
}
}
struct S{
~this(){
}
}
void main(){
auto c = new C;
{
auto st = SumType!(C, S)(c);
}
assert(destructed == true);
}
More information about the Digitalmars-d-announce
mailing list