diff options
-rw-r--r-- | lib/pure/collections/sequtils.nim | 6 | ||||
-rwxr-xr-x | tests/run/ttoseq.nim | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index 82679bb7f..0fda5700e 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -63,3 +63,9 @@ template filterIt*(seq1, pred: expr): expr {.immediate, dirty.} = if pred: result.add(it) result +template toSeq*(iter: expr): expr {.immediate.} = + ## Transforms any iterator into a sequence. + var result {.gensym.}: seq[type(iter)] = @[] + for x in iter: add(result, x) + result + diff --git a/tests/run/ttoseq.nim b/tests/run/ttoseq.nim index ec49489d0..34cc4824b 100755 --- a/tests/run/ttoseq.nim +++ b/tests/run/ttoseq.nim @@ -1,12 +1,11 @@ discard """ - output: "23456" + output: "2345623456" """ -template toSeq*(iter: expr): expr {.immediate.} = - var result: seq[type(iter)] = @[] - for x in iter: add(result, x) - result - +import sequtils + +for x in toSeq(countup(2, 6)): + stdout.write(x) for x in items(toSeq(countup(2, 6))): stdout.write(x) |