Mýliš se, chyby které zmiňuji, jsou o komplexnosti. V C je například obtížné udržet informaci o validitě pointeru. Např. pokus o smart pointer v čistém C s počítáním refcountu je dost na hlavu, musíš stále myslet na to, kdy refcount zvýšit a snížit a jakákoliv opomenutí vede k těžko ohalitelným chybám. Druhá kategorie jsou data races v multithread aplikacích, tohle je taky hodně obtížné udělat správně a stále se v tom dělají chyby (i ti nejlepší programátoři...).
Rust tohle všechno řeší už při kompilaci, pokud takovou chybu uděláš, program se vůbec nezkompiluje.
A ještě jedna věc, Rust není o nějakém záplatování chyb. Rust nabízí mnohem vyšší míru abstrakce než C, např. má i generika. Vývoj v C bude pomalejší a dražší než v Rustu a výsledek bude horší.