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... 

Reply via email to