> - A nullpointereket minden nyelvben le kell kezelni, ahol vannak.
Igen. Kérdés, hogy ha elfelejted, a fordító szól-e.
> - Ez az unsafe ez tök jó dolog. Kulcs a lábtörlő alatt. :) Ha tényleg preventálni akarom, akkor megtiltom, ha meg nem, akkor meg engedem. Ez így egy felesleges rituálé.
Nem. Nyilván van rés, hiszen másképp nem lehetne drivert írni, vagy 1-2 alacsonyszintű dolgot (pl. hatékony adatszerkezetek). De legyen az a szabály, hogy „alkalmazásba nem írunk unsafe-et”. És ez meg is oldható. Nehezebb persze safe Rust kódot írni, de hát valamit valamiért.
Másrészről még az unsafe blokkokat le is lehet (és érdemes) korlátozni minimális méretűre, és azt sokkal könnyebb körbetesztelni. Az összes többire ott vannak a nyelvi garanciák. (Nem azt mondom ezzel, hogy nem kell tesztelni azt, hogy a program a specifikáció szerint viselkedik-e).
> - A data-lockot, vagy a data-isolationt bármilyen nyelvben meg lehet csinálni. Akár C-ben is.
Megintcsak az a helyzet, hogy a Rust elvárja, hogy a szálak közt megosztott adat vagy csak olvasható legyen, vagy atomi típus, vagy lock mögé kerüljön. Nem tudsz versenyhelyzetet csinálni. C-ben csak a lehetőségünk van meg, hogy lock-oljunk. Ha elfelejtjük, az undefined behaviour. Gyakran átesik a teszteken, piszok nehezen reprodukálható, következményét tekintve pedig egy segfault a szerencsésebb esetek közé tartozik, mert nyugodtan össze is firkálhatja a memóriát, és adatvesztést okozhat.
> > - free utáni vektorhasználat: Rust ownership & lifetime alapú automatikus memória felszabadítás
> - Ezt is megoldotta sok más nyelv.
A felszabadítást igen, a referenciák (ha vannak raw referenciák) lifetime-ellenőrzését nemigen. Szintén undefined behaviour-t szűrünk ki ezzel, ráadásul olyat, ami a jelenlegi bugok elég nagy részét képezik.