( uid_6201 | 2023. 05. 22., h – 08:10 )

"C-nek ez nem is feladata" - És körbeértünk. Van a feladatod, amelyre a Rust kézreállóbb. Hát azt használod.

Felszabadítás: na ez külön megér pár gondolatot. Jól belekérdeztél érdekes dolgokba, de továbbgondolva mindegyik egyértelmű. Nézzük.

Lifetime (életciklus) - nagyon korrekt Rust-ban. Minden adatszerkezetről egyértelmű, hogy mely függvényben szabadítható fel és ott fog magától felszabadulni. Lásd még ownership témát. Ha a vektort szőrőstűl-bőröstűl átadod a függvénynek, akkor a meghívó programban már nem tudsz rá hivatkozni és a fordítás során a függvényben lesz a felszabadítás rész implementálva. Ez volt talán az első legnagyobb húzás a nyelv alkotójától. Ezzel a trükkel végre egyértelműen követhetővé vált a változó életciklusa és így az, hogy hol kell felszabadítani.

Lokális változót hiba esetén nem kell felszabadítania? - eleve értelmezhetetlen, például hogyan hivatkozol rá amikor a neve csak a lokális térben értelmezhető. Tehát ahogy vége a függvénynek, a lokális változók, továbbá aminek az életciklusa itt ér véget (lásd iménti példát), az fel fog szabadulni. Az erőforrások is a Drop trait szerint az összes utófeladat végrehajtásával együtt felszabadulnak. Tudsz esetleg ellenpéldát, ahol nem lenne jó és kell tartani bármi lokális változót?

Globális változó - több oka van, hogy unsafe { .. } környezetben tudod használni. Unsafe kulcsszót pedig csak indokolt esetben alkalmazz. A felelősség ugyebár unsafe kulcsszó mentén a programozóra van testálva. Tehát itt nem dönt a Rust az ember helyett. :)