> Optional típus pl. nincs a C-ben, C++-ban (stl) már van. Enélkül, vagy ilyesmi nélkül fordítási időben nem derül ki, hogy kiolvashatok-e egy pointert, vagy érvénytelen.
Lehet, de megkerülni azt is meg lehet.
> Ez egy egyszerű szabály, és még egyszer: alkalmazást lehet írni safe (alapértelmezett) módban. Driver-re meg nincs az a programnyelv, ami felelősséget tudna vállalni pl. azért, hogy melyik memóriacímre milyen regiszter van map-elve. Szóval elkerülhetetlen az unsafe, mint nyelvi elem - alkalmazásfejlesztésnél meg tökéletesen elkerülhető.
Nem regiszterekre gondoltam, egy egyszerű allokált terület túlcímzésére pl. olyan pedig alkalmazásfejlesztésnél is előfordul, nem csak C nyelvben.
> Amúgy safe módban nem tudsz pointert dereferálni. Anélkül meg ugye nem sok értelme van pointert használni. Tehát úgyis mindenhova referenciát teszünk, ahol raw hivatkozás kell. A referenciákra pedig semmi engedményt nem tesz az unsafe (talán a pointer derefen kívül nincs is más hatása...). Szóval ritka, hogy véletlenül becsúszik egy unsafe. Általában csak komolyabb refaktorálással tudnád elrontani a programot, lényegében azt már akarni kell.
> Más kérdés, hogy volt már bukta abból, hogy programot a kezdetektől unsafe blokkokkal írtak tele. Ez nyilván nem a nyelv hibája.
Dehát le is írtam, hogy ez nem a Rust hibája, hanem a hülye programozóé. És éppen ez volt a lényeg, hogy ha a programozó hülye, akkor unsafe és pointer és ugyanott vagyunk, mint C-nél, have a segfault. A hülyeség ellen semmi sem véd.
> Ez nem mond ellent annak, amit mondtam. A Rust is a lehetőségek nyelve. Az öntökönlövésre kevésbé, másra inkább. :)
Akkor ez a szál kétirányú zsákutca. :P
> C-ben nem lehet implementálni pl. shared pointert, mert nincs destruktor. (Állítólag GC lib létezik, most nem nézek utána, de tutira veszem, hogy nem teljesen automata).
C-ben minden pointer "shared", hiszen a process a saját címterében oda nyúlkál, ahova akar.
> - De azért hangsúlyoztam, hogy raw referenciák, mert nem smartpointerről beszélek (futásidejű mechanizmusokkal (bár olyan is van) ), hanem fordítási idejű ellenőrzésről, ehhez pedig kell a nyelv támogatása. Sok esetben külön magyarázat nélkül is látja, hogy mit engedhet meg, de vannak kivételek, ilyenkor magyarázni kell neki, különben túl szigorú, mert hibát nem engedhet meg. Hát pl. az ilyenek miatt nehezebb kicsit belejönni. De bele lehet. :)
A fentebbi példához már kőkemény heurisztika kéne. 100%-os védelem nincs.