I am new to Zig and trying to understand how the errdefer keyword works. Consider the following code:
var v1 = try fun1(); // If this line fails, what happens next?
errdefer v1.destroy(); // Will this errdefer execute?
var v2 = try fun2();
errdefer v2.destroy(); // Will this errdefer execute if `fun1()` fails?
My questions:
If `fun1()` fails, v1 is never initialized. Since `errdefer` executes only when an error occurs, would calling `v1.destroy()` be undefined behavior?
If `fun1()` fails, will `errdefer v2.destroy();` still be registered, or is it skipped entirely because `fun2()` was never called?
Thanks in advanced.