mirror of
https://github.com/metagn/skinsuit
synced 2026-01-02 12:34:41 +00:00
No description
| .github | ||
| src | ||
| tests | ||
| .gitignore | ||
| README.md | ||
| skinsuit.nimble | ||
skinsuit
Utility macros mostly for object variants
import skinsuit
type Value {.sum, equals.} = object
case kind: _
of None: discard
of Integer, Boolean:
_: int
of Unsigned:
_: uint
of Float:
_: float
# == for case objects generated by equals
assert Value(kind: Integer, integer: 1) == Integer(1)
assert Value(kind: Boolean, integer: 1) == Boolean(1)
assert Value(kind: Unsigned, unsigned: 1) == Unsigned(1)
assert Value(kind: Float, float: 1) == Float(1)
proc double[T](x: var T) =
x *= 2
proc double(x: ValueNone) = discard
proc double(v: var Value) {.dispatchCase: v.}
var v = Integer(1)
double(v)
assert v == Integer(2)
v = Float(1.0)
double(v)
assert v == Float(2.0)
# see tests/docs for other macros