Having tried that particular experiment, I think you end up wanting both. Defer is great for one offs, but still easy to forget, and it doesn’t compose like destructors in composed types can. (Though type level composition in C++/Swift/Rust still ends up feeling obnoxious imo)