I wonder if anyone has designed a "systems" programming language that doesn't have destructors, but makes it a compile error for a variable to fall out of scope without being stored or explicitly destroyed. When people like Linux kernel maintainers complain about the "implicit control flow" of destructors, that could be a perfect alternative.
I need to try the experimental `LinearTypes` feature of Haskell. It would be nice to see Rust offer a feature like that. (Rust has "affine" rather than "linear" types.)