On Tue, Mar 17, 2026 at 6:46 AM Matthew Brost <[email protected]> wrote: > > You can do RAII in C - see cleanup.h. Clear object lifetimes and > ownership are what is important. Disciplined coding is the only to do > this regardless of language. RAII doesn't help with help with bad object > models / ownership / lifetime models either.
"Ownership", "lifetimes" and being "disciplined" *is* what Rust helps with. That is the whole point (even if there are other advantages). Yes, the cleanup attribute is nice, but even the whole `CLASS` thing is meant to simplify code. Simplifying code does reduce bugs in general, but it doesn't solve anything fundamental. Even if we had C++ and full-fledged smart pointers and so on, it doesn't improve meaningfully the situation -- one can still mess things up very easily with them. And yes, sanitizers and lockdep and runtime solutions that require to trigger paths are amazing, but not anywhere close to enforcing something statically. The fact that `unsafe` exists doesn't mean "Rust doesn't solve anything". Quite the opposite: the goal is to provide safe abstractions where possible, i.e. we minimize the need for `unsafe`. And for the cases where there is no other way around it, the toolchain will force you to write an explanation for your `unsafe` usage. Then maintainers and reviewers will have to agree with your argument for it. In particular, it is not something that gets routinely (and implicitly) used every second line like we do in C. Cheers, Miguel
