h := CreateFile("data.txt", ...) defer CloseHandle(h) // Guaranteed to run on scope exit // ... use h ...
Odin’s lack of automatic cleanup is a feature, not a bug. It forces you to think about resource lifetimes at every step, leading to more predictable and often more efficient software. The rqt-close pattern—whether you name it that or simply call CloseHandle directly—is the cornerstone of robust system programming in Odin. odin rqt-close
| Platform | Resource Type | Close Function | |----------|---------------|----------------| | Windows | HANDLE | CloseHandle | | Linux / macOS | file descriptor | close (syscall or libc) | | WebAssembly (WASI) | fd | fd_close | h := CreateFile("data
Close_Handle :: proc(h: windows.HANDLE) -> bool if h == windows.INVALID_HANDLE_VALUE do return true return windows.CloseHandle(h) It forces you to think about resource lifetimes