OO!
我加了个 {.gcsafe.} 可以通过了:
import asyncnet, asyncdispatch
var sock = newAsyncSocket()
var f = connect(sock, "irc.freenode.net", Port(6667))
f.callback =
proc (future: Future[void]) {.gcsafe.} =
echo("Connected in future!")
echo repr sock
for i in 0 .. 50:
var recvF = recv(sock, 10)
recvF.callback =
proc (future: Future[string]) =
echo("Read ", future.read.len, ": ", future.read.repr)
runForever()
如果不加的话,会出现 Error:
Error: type mismatch: got (Future[system.void], proc (future:
Future[system.void]){.locks: <unknown>.})
but expected one of:
proc callback=(future: FutureBase; cb: proc ())
proc callback=[T](future: Future[T];
cb: proc (future: Future[T]))