ref is also needed for async:

is not working:
    
    
    import asyncdispatch
    type Foo = object
        num: int
    
    proc dostuff(foo: var Foo): Future[void] {.async.} =
        foo.num = 0
        return
    
    var foo = Foo()
    waitFor foo.dostuff()
    
    #Error: 'foo' is of type <var Foo> which cannot be captured as it would 
violate memory safety, declared here: 
c:\Users\david\projects\nimPlayground\t1207.nim(7, 14)
    
    
    
    Run

while this works:
    
    
    import asyncdispatch
    type Foo = ref object
        num: int
    
    proc dostuff(foo: Foo): Future[void] {.async.} =
        foo.num = 0
        return
    
    var foo = Foo()
    waitFor foo.dostuff()
    
    
    Run

Reply via email to