Thanks... that does it!
In my various iterations I knew about sequtils/toSeq but what I missed was the
**_items_**
I find it interesting that
import sequtils
type
Colors = enum
red
green
blue
type
Colors* = enum
red
green
blue
let x = Colors.items
Run
generates:
Error: undeclared field: 'items'
found iterators.items(a: string) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(257, 10)]
found iterators.items(s: Slice[items.T]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(132, 10)]
found iterators.items(a: seq[T]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(239, 10)]
found iterators.items(a: cstring) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(62, 10)]
found iterators.items(a: array[IX, T]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(35, 10)]
found iterators.items(a: openArray[T: not char]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(11, 10)]
found iterators.items(E: typedesc[T: enum and Ordinal]) [iterator
declared in /usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(122, 10)]
found iterators.items(a: set[T]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(53, 10)]
found iterators.items(a: openArray[T: char]) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/system/iterators.nim(18, 10)]
found sequtils.items(xs: iterator (): T{.closure.}) [iterator declared in
/usr/local/Cellar/nim/2.0.0_1/nim/lib/pure/collections/sequtils.nim(1135, 10)]
Run
but
let x = Colors.items.toSeq
Run
generates the expected
@[red, green, blue]
Run
I think I dig a little more into the docs/code for **items**.
BTW:
I now added a little helper in my general nim util module:
proc toSeq[T](enumType: T): seq[T] = enumType.items.toSeq
Run
which allows the following:
echo Colors.toSeq # -> @[red, green, blue]
Run
Thanks again for you help...