I found that, in the code below, myEncodeQuery works well while myAsyncEncodeQuery isn't even compiled.
import uri, asyncdispatch
proc myAsyncEncodeQuery(query: openArray[(string, string)]) {.async.} =
echo(encodeQuery(query))
proc myEncodeQuery(query: openArray[(string, string)]) =
echo(encodeQuery(query))
echo(encodeQuery({"foo": "bar", "baz": "qux"}))
myEncodeQuery({"foo": "bar", "baz": "qux"})
# commenting the line below will eliminate the compile error.
waitFor myAsyncEncodeQuery({"foo": "bar", "baz": "qux"})
I got a compilation error something like:
Error: 'query' is of type <openarray[tuple of (string, string)]> which cannot be captured as it would violate memory safety, declared here: D:\...\test.nim(3, 25)
What kind of memory safety violation it is causing, and is there any way to avoid the error?