Rust-túra Tartalomjegyzék

Okos Nem Biztonságos Kód

Az okos mutatók elég gyakran használnak nem biztonságos (unsafe) kódot. Ahogy korábban említettük, ezek gyakran használt eszközök, ha a legközvetlenebb módon kell a memóriával dolgozni.

Mit jelent az, hogy nem biztonságos kód? A nem biztonságos kódok ugyanúgy működnek, mint a rendes Rust, azzal a kivétellel, hogy van néhány képessége, amire a Rust fordító nem tud semmiféle garanciát adni.

Az egyik legfontosabb ilyen képesség a nyers mutatók lekövetése. Ez azt jelenti, hogy készítünk egy nyers mutatót, ami mutat valahova a memóriában és kijelentjük róla, hogy amire mutat, az "márpedig igenis érvényes adat!" és olyan formára hozzuk, amivel tudunk dolgozni (pl.: *const u8-ból u8-at csinálunk).

A Rust nem képes a memória minden bájtjának jelentését követni. Mivel nem képes garantálni, hogy egy nyers mutatóként használt tetszőleges szám által hivatkozott memóriaterületen mit fogunk találni, ezt a memória-hozzáférés műveletet unsafe { ...} blokkba kell tennünk.

Bár az okos mutatók rengetegszer követnek nyers mutatókat, ezek a típusok meglehetősen alaposan ellenőrzött eszközök és elég biztosak lehetünk benne, hogy biztonságosak.