The claim that Rust’s complexity is a detriment to correctness is an awkward argument.
The complexity you’re probably referring to is the type system and/or borrow checker. The type system is strong enough that, if you take the time, correctness can be encoded into the types. Meaning, you can build types that make it a compilation error if the software is not “correct”. At that point even refactors can be more assured to meet those encoded correctness guarantees. So I’d say that the type system helps develop software that is provably correct.
Then there’s the borrow checker, and that’s about runtime memory access correctness, again increasing correctness.
Point being, Rust programs because of the “complexity” can get much closer to correct than other languages in its space.
The complexity you’re probably referring to is the type system and/or borrow checker. The type system is strong enough that, if you take the time, correctness can be encoded into the types. Meaning, you can build types that make it a compilation error if the software is not “correct”. At that point even refactors can be more assured to meet those encoded correctness guarantees. So I’d say that the type system helps develop software that is provably correct.
Then there’s the borrow checker, and that’s about runtime memory access correctness, again increasing correctness.
Point being, Rust programs because of the “complexity” can get much closer to correct than other languages in its space.