# std/enumerate

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

This module implements `enumerate` syntactic sugar based on Nim's macro system.

# Imports

since, macros

# Macros

    macro enumerate(x: ForLoopStmt): untyped

  Enumerating iterator for collections.

  It yields `(count, value)` tuples (which must be immediately unpacked). The default starting count `0` can be manually overridden if needed.

  Example:

      let a = [10, 20, 30]
      var b: seq[(int, int)] = @[]
      for i, x in enumerate(a):
        b.add((i, x))
      assert b == @[(0, 10), (1, 20), (2, 30)]

      let c = "abcd"
      var d: seq[(int, char)]
      for (i, x) in enumerate(97, c):
        d.add((i, x))
      assert d == @[(97, 'a'), (98, 'b'), (99, 'c'), (100, 'd')]

  Source Edit