1 2 3 4 5 6 7 8 9 10
type TIDGen*[A: Ordinal] = object next: A free: seq[A] proc newIDGen*[A]: TIDGen[A] = newSeq result.free, 0 var x = newIDGen[int]()