This code would fail, because if you define new proc for to_seq old version with iterator would stop working, play. Isn't it supposed to work? I just add one more version of to_seq multiple dispatch function.
import std/[sequtils, tables]
proc to_seq*[K, V](t: Table[K, V]): seq[(K, V)] =
for k, v in t: result.add (k, v)
iterator some_iterator*(data: string): string =
yield "one"
echo to_seq(some_iterator("input"))
/usercode/in.nim(9, 26) Error: attempting to call routine: 'some_iterator'
found in.some_iterator(data: string) [iterator declared in /usercode/in.nim(6, 10)]