> Are you familiar with GTK and cairo?

No I'm not. I am quite familiar with C/C++ FFI, ref and ptr though in high 
performance context where allocation is very expensive (GPUs memory allocation) 
and the GC is a bottleneck.

In short, for a local variable, I have the following strategies:
    

  * If trivial type: use `let`
  * If I want an alias but type is not trivial:
    * Use a template for aliasing
    * take the address and pass that around


For the types:
    

  * Trivial type to copy: stack object
  * Non-trivial (i.e. resource with notion of ownership of the 
file/database/memory/socket/window):
    
    * `ref` if pure Nim
    * `ptr``(potentially stored in a ``ref`) for FFI



In your case, if you use ptr or template for aliasing instead of let/var you 
will not have a =destroy call at the end of the function.

Reply via email to