Unsafe je v C++ prakticky všechno např.:
*pointer;
pointer += neco; *pointer;
pole[index];
*iterator;
iterator += neco; *iterator;
if (pointer) *pointer; // pointer neni null, ale objekt uz neexistuje
objekt->metoda();
Krása, ale chtěl jsem C++. Ne C.
Aha, takže v C++ se nepřistupuje do pole nebo se nevolají metody objektu? To už je opravdu velká demagogie. Znovu opakuji, v C++ není safe prakticky nic, protože C++ neřeší životnost objektů.
Rust si hlavně pomáhá tím, že má všechno imutabilní. Já taky v programech mám většinu věcí imutabulní právě proto, abych co nejméně řešil data races. C++ vám nebrání mít imutabilní objekty. To není vlastnost jazyka. A pokud v runtime automaticky zamyká přístup k neimutabilním objektům, ... tak pak je to o tom výkonu ... rozhodně to nebude žádný modrý přízrak.
Garance v Rustu jsou založené na tom, že může být buď libobolný počet imutabilních objektů, nebo pouze jeden objekt mutabilní. V runtime Rust nic nezamyká, řeší se to během kompilace. Prosím nepište nesmysly, když o tom nic nevíte. Jediný runtime overhead navíc v Rustu je při kontrole mezí polí při náhodném přístupu. Proto je taky rychlost Rustu a C++ srovnatelná. Rust nemá žádný runtime overhead navíc a přitom garantuje, že v programu není data race. Zjistí to už během kompilace.