For me to understand it, I considered Nim's copy semantics. Find an variable 
inside a procedure that gets copied and apply sink to the proc's parameter. If 
the argument is not used after the call, then it will be moved to the proc (or 
better the memory location it points to), else a copy is performed.
    
    
    var a = "123"
    proc t(a: string) =
      let b = a
    
    t(a)
    # echo a # this causes a copy
    
    
    Run

Reply via email to