I think `T1_` represents a temporary object, and `=sink` means `=`, so this 
code:
    
    
    N_LIB_PRIVATE N_NIMCALL(void, 
reset__main_6)(tyObject_GoodboySave__V3NLTqc4Fsuvs9b4KG9a39bzg* 
obj__G9bGxRHjC5xtc0ZF9cAh9cDTA) {
            tyObject_GoodboySave__V3NLTqc4Fsuvs9b4KG9a39bzg T1_;
    NIM_BOOL* nimErr_;
    {nimErr_ = nimErrorFlag();
            nimZeroMem((void*)(&T1_), 
sizeof(tyObject_GoodboySave__V3NLTqc4Fsuvs9b4KG9a39bzg));
            eqsink___main_20((&(*obj__G9bGxRHjC5xtc0ZF9cAh9cDTA)), (&T1_));
            if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
            }BeforeRet_: ;
    }
    
    
    Run

is equivalent to:
    
    
    proc reset(obj: var GoodboySave) =
      obj = GoodboySave()
    
    
    Run

where `GoodboySave()` is `T1_`.

To make it efficient, the implementation can be changed to
    
    
    proc reset(obj: var GoodboySave) =
      `=destroy`(obj)
      wasMoved(obj)
    
    
    Run

But I think you can just define a resetting proc that fits your case, instead 
of relaying on the standard one.

Reply via email to